用于分组的案例不敏感Solr查询&过滤查询

时间:2017-09-23 05:45:07

标签: solr lucene solr4 solrnet

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

所述

在应用程序方面,我们使用Solr返回的facet来提供UI上的过滤体验,并使用facets作为params构建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)

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

我们是否做错了所以Solr在提出请求时会区分大小写,而不是根据此帮助文档?或者Solr帮助文档本身有错误?

1 个答案:

答案 0 :(得分:0)

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

Solr中的所有内容都区分大小写,分面不是特殊情况。

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