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>
<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“字段定义为:
<field name="cat" type="string" indexed="true" stored="true" multiValued="true"/>"string“类型定义为:
<fieldType name="string" class="solr.StrField" sortMissingLast="true" />当我对"cat“字段执行按值(http://localhost:8983/solr/collection1/select?q=*%3A*&rows=0&wt=json&indent=true&facet=true&facet.field=cat&facet.sort=index)排序的方面查询时,我得到:
....
"facet_fields":{
"cat":[
"abc",1,
"management",1,
"manuka",1,
"mystery",1,
"mānuka",1,
"stuff",3]},
....请注意,mānuka在神秘之后。我想让我的ā努卡在曼纽卡之后,在东西之前,也就是,我想要那种忽视包括马克龙在内的符号学。
如果这是一个非方面搜索,看起来我可以通过为一个单独的复制字段设置校对并对其进行排序来实现我想要的结果(我不能为字段本身设置排序规则,因为存储的数据将是排序规则键的二进制表示)。但是,对于facet查询,这种方法似乎是不可能的,因为它们只能按照索引或计数进行排序。
我是不是忽略了什么?在我确实需要显示"cat“字段值的环境中,有什么技巧可以让它工作吗?
发布于 2016-02-29 17:03:33
问题是如何自定义一个方面的索引顺序。
您的建议是使用校对。你可以这样做,你的面的顺序将是正确的。问题是,CollationField和ICUCollationField都没有覆盖indexedToReadable法。
这两个类不能覆盖indexedToReadable,因为通常从单词到术语的映射不是可逆的。但是,对于可能的情况,您可以实现ICUCollationField的子类,该子类以合理的方式覆盖indexedToReadable。
您的起点可以是TestICUCollationField
<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"/>正如您将在本例中看到的那样,facet值的名称非常不可读。
https://stackoverflow.com/questions/35641539
复制相似问题