首页 文章

用于分面和过滤查询的Case In-Sensitive Solr查询

提问于
浏览
0

我正在使用Solr为我们的电子商务应用程序提供分面功能 . 它已按照此处所述的标准方式实施https://wiki.apache.org/solr/SimpleFacetParameters#Tagging_and_excluding_Filters

在应用程序方面,我们使用Solr返回的facet来提供UI上的过滤体验,并使用facet作为参数构建URL . 然后使用这些参数将fq的刻面参数进一步传递给Solr .

这很有效,除了我们的URL区分大小写,因为当我们更改为小的情况时,facet查询不再起作用并且给我们未定义的字段错误 .

解决此问题的一个解决方案是将所有方面编入索引为小案例 . 但是因为方面是由Solr构建的结果本身构建的,所以我们也得到了小的结果 . 然后在前端,我们松开原始的情况,它不能由CSS管理,因为我们需要保留案例的许多方面,如RAM应显示为RAM而不是Ram或ram . 同样,microSD需要显示为microSD而不是Microsd或microsd .

我们在这里看到了https://wiki.apache.org/solr/SimpleFacetParameters#Tagging_and_excluding_Filters,因为请求是以小写的形式提出的

q=mainquery&fq=status:public&fq=**doctype:pdf**&facet=on&**facet.field=doctype**

但结果显示在适当的情况下

=== Document Type ===
  [ ] Word (42)
  [x] PDF  (96)
  [ ] Excel(11)
  [ ] HTML (63)

对我们来说,这些请求不起作用,并将错误视为未定义的字段!

Are we doing something wrong so Solr works case sensitive while making request and not as per this help doc? Or there is a mistake in Solr help doc itself?

1 回答

  • 0

    这是(非常)旧的,未维护的维基页面,并不是一个不错的参考 . 使用当前参考文档 . 这个图只是作为如何呈现UI的示例,您在过滤时仍然必须使用正确索引的版本 .

    Solr中的所有内容都区分大小写,切面不是特例 .

    您可以通过单独的字段进行过滤(带有lowercasefilter的keywordtokenizer)和一个用于显示的字段(不带小写过滤器的字符串/ keywordtokenizer)来解决此问题 .

相关问题