Sorting 在Solr 4中对方面值排序时忽略变音符号
Tl;dr:如何让Solr 4在对刻面值进行排序时忽略变音符号 在默认Solr示例中,我向“collection1”Solr核心添加了以下四个文档:Sorting 在Solr 4中对方面值排序时忽略变音符号,sorting,solr,solr4,Sorting,Solr,Solr4,Tl;dr:如何让Solr 4在对刻面值进行排序时忽略变音符号 在默认Solr示例中,我向“collection1”Solr核心添加了以下四个文档: <doc> <field name="id">1</field> <field name="cat">manuka</field> <field name="cat">mystery</field> </doc> <doc>
<doc>
<field name="id">1</field>
<field name="cat">manuka</field>
<field name="cat">mystery</field>
</doc>
<doc>
<field name="id">2</field>
<field name="cat">mānuka</field>
<field name="cat">stuff</field>
</doc>
<doc>
<field name="id">3</field>
<field name="cat">management</field>
<field name="cat">stuff</field>
</doc>
<doc>
<field name="id">4</field>
<field name="cat">abc</field>
<field name="cat">stuff</field>
</doc>
注意,玛努卡是在神秘之后出现的。我希望毛利努卡排在麦卢卡之后,排在其他东西之前,也就是说,我希望这种类型忽略包括长音符在内的变音符号
如果这是一个非方面搜索,看起来我可以通过设置一个单独的副本字段并按该字段排序来实现我想要的(我不能为字段本身设置排序规则,因为存储的数据将是排序规则键的二进制表示)。然而,这种方法似乎不适用于方面查询,因为它们只能按索引或计数排序
我是不是忽略了什么?在我确实需要显示“cat”字段的值的环境中,是否有一些技巧可以让它工作?问题是关于自定义方面的索引顺序 你的建议是使用。你可以这样做,你的方面的顺序将是正确的。问题在于,两者都没有凌驾于法律之上 这两个类不能重写
indexedToReadable
,因为从单词到术语的映射通常是不可逆的。但对于您可能的情况,您可以实现ICUCollationField
的子类,该子类以完整的方式覆盖indexedToReadable
你的出发点可能是
...
正如您将在本例中看到的,刻面值的名称非常不可读。问题是关于自定义刻面的索引顺序 你的建议是使用。你可以这样做,你的方面的顺序将是正确的。问题在于,两者都没有凌驾于法律之上 这两个类不能重写
indexedToReadable
,因为从单词到术语的映射通常是不可逆的。但对于您可能的情况,您可以实现ICUCollationField
的子类,该子类以完整的方式覆盖indexedToReadable
你的出发点可能是
...
正如您将在本例中看到的,刻面值的名称非常不可读
<field name="cat" type="string" indexed="true" stored="true" multiValued="true"/>
<fieldType name="string" class="solr.StrField" sortMissingLast="true" />
....
"facet_fields":{
"cat":[
"abc",1,
"management",1,
"manuka",1,
"mystery",1,
"mānuka",1,
"stuff",3]},
....
<fieldType name="sort_fr_t" class="solr.ICUCollationField" locale="fr" strength="primary"/>
...
<field name="sort_fr" type="sort_fr_t" indexed="true" stored="true" docValues="true" multiValued="true"/>