我们有一个字段'facet_tag',其中包含描述产品的标签 . 由于标签是德语,因此它们可能包含非ASCII字符(如变音符号) . 以下是一些可能的值:
"Zelte"
"Tunnelzelte"
"Äxte"
"Sägen"
"Softshells"
现在,如果我们使用如下查询查询facer的facet:
http://<solr_host>:<solr_port>/solr/select?q=*&facet=on&facet.field=facet_tag&facet.sort=index
排序结果如下所示:
<lst name="facet_counts">
<lst name="facet_queries"/>
<lst name="facet_fields">
<lst name="facet_tag">
<int name="Softshells">1</int>
<int name="Sägen">1</int>
<int name="Tunnelzelte">1</int>
<int name="Zelte">1</int>
<int name="Äxte">2</int>
</lst>
</lst>
<lst name="facet_dates"/>
<lst name="facet_ranges"/>
</lst>
标签"Äxte"应该是第一个项目,然后是"Sägen" . 显然Solr在这种情况下不能很好地处理非ASCII字符(在分面搜索的文档中也有说明,参见http://wiki.apache.org/solr/SimpleFacetParameters#facet.sort)
有没有办法让Solr正确排序这些值而不规范变音符号(因为我们向用户显示值)?
1 回答
我会用ASCIIFoldingFilterFactory:
这样,您索引的内容将被标准化(例如,Äxte将被索引为Axte),但存储的内容不会更改 . 这就是为什么你应该得到预期的排序,但你将展示的内容仍然是原始的(例如Äxte) .
UPDATE
该解决方案不适用于facet,因为它们使用索引值 . 使用
ASCIIFoldingFilterFactory
你可以有正确的排序,但你不知道任何其他解决方案 .