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



我在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更大的值。查询中的问题在哪里。

注意:我必须在这个字段上分组,这也是我应用分组的原因。不用担心

当涉及到范围查询时,Solr中的浮点字段类型有一些奇怪的行为。。。

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

发件人:http://lucene.apache.org/solr/4_10_4/solr-core/org/apache/solr/schema/FloatField.html

您要使用的是等效的Trie字段,在本例中它是一个Trie浮点值。所以你的字段应该定义如下。。。

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

请确保在更改架构后重新索引,然后重试范围查询。

范围查询在普通的基元字段类型(如float)上无法按预期工作,因为对于这些字段,在范围查询过程中,lucene会按字典顺序而不是数字顺序对文档进行排序,然后对其应用范围。尝试字段或可排序字段就可以了。此外,对于solr5和更高版本,基本类型只支持trie字段。

最新更新