不区分大小写的 Solr 查询,但保留结果的大小写

Case insensitive Solr query for facets but preserve case for results

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

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

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

我们如何才能让 Solr Query 不区分大小写,但仍然保留用于显示分面的结果的大小写?

首先:您收到有关 未定义字段 的错误似乎很奇怪。您可能不应该让最终用户指定使用的字段,而无需根据您希望允许过滤或分面的字段验证字段。

第二:使用一个字段生成分面,一个字段用于过滤。没有任何内容表明您必须使用相同的字段来呈现方面和在 fq 中使用。

您可以使用带有 KeywordTokenizer 和 LowercaseFilter 的字段来进行过滤,然后使用 <copyField> 将内容从您用于分面的字段复制到小写字段中进行过滤。