分数的SOLR范围查询无法正常工作

时间:2016-01-06 07:13:12

标签: solr lucene

我在solr中有一个包含分数值的字段,如1.2,0.523,4.7等。 该字段定义为

<field name="ratio" type="float" stored="true" indexed="true"/>

为了搜索范围从0.2到1,我使用以下查询

http://localhost:8983/solr/collection1/select?q=bag&df=keywords&wt=json&indent=true&group=true&group.field=ratio&fq=ratio:[0.2 TO 1]

但我获得的结果中包含的比率格式为1.查询中的问题在哪里。

注意:我还必须对此字段进行分组,以及为什么我也应用了分组。不要担心

2 个答案:

答案 0 :(得分:1)

Solr中的float字段类型在范围查询时有一些奇怪的行为......

  

字段值将按数字排序,但范围查询(以及其他   依赖于数字范围的功能将无法按预期工作:   值将以unicode字符串顺序计算,而不是数字顺序。

来自:http://lucene.apache.org/solr/4_10_4/solr-core/org/apache/solr/schema/FloatField.html

您想要使用的是等效的Trie field,在这种情况下是Trie float。所以你的领域应该定义如下......

<field name="ratio" type="tfloat" stored="true" indexed="true"/>

确保在更改架构后重新编制索引,然后再次尝试范围查询。

答案 1 :(得分:0)

范围查询在普通原始字段类型(如float)上无法按预期工作,因为对于这些字段,在范围查询期间,lucene按字典顺序而不是数字顺序对文档进行排序,然后对其应用范围。 Trie字段或可排序字段应该可以解决问题。此外,对于solr 5及更高版本,原始类型仅支持trie字段。