不区分大小写的 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>
将内容从您用于分面的字段复制到小写字段中进行过滤。
我正在使用 Solr 为我们的电子商务应用程序提供分面功能。它已按照此处所述的标准方式实施 https://wiki.apache.org/solr/SimpleFacetParameters#Tagging_and_excluding_Filters
在应用程序方面,我们使用 Solr 返回的方面来提供 UI 上的过滤体验,并且使用这些方面作为参数构建 URL。然后使用这些参数将 fq 的分面参数进一步传递到 Solr 中。
这很好用,除了我们的 URL 区分大小写,因为当我们更改为小写时,facet 查询不再有效并给我们未定义的字段错误。
我们如何才能让 Solr Query 不区分大小写,但仍然保留用于显示分面的结果的大小写?
首先:您收到有关 未定义字段 的错误似乎很奇怪。您可能不应该让最终用户指定使用的字段,而无需根据您希望允许过滤或分面的字段验证字段。
第二:使用一个字段生成分面,一个字段用于过滤。没有任何内容表明您必须使用相同的字段来呈现方面和在 fq
中使用。
您可以使用带有 KeywordTokenizer 和 LowercaseFilter 的字段来进行过滤,然后使用 <copyField>
将内容从您用于分面的字段复制到小写字段中进行过滤。