2016-01-06 20 views
1

我Solr中有一個字段包含分數值1.2一樣,0.523,4.7等 此字段的定義如下爲分數數字SOLR範圍查詢沒有去正常工作

<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哪裏是在查詢中的問題。

注意:我必須在此字段上進行分組,也是爲什麼我也應用了分組。不要擔心它

+0

Solr排序是lexicographice不是數字 – HMS

回答

1

Solr中浮動的字段類型有一些奇怪的行爲,當涉及到範圍查詢......

字段值將排序數字,但範圍查詢(和其他 功能依賴在數字範圍內)將無法按預期工作: 值將以unicode字符串順序進行評估,而不是數字順序。

來源:http://lucene.apache.org/solr/4_10_4/solr-core/org/apache/solr/schema/FloatField.html

要使用什麼是等效Trie field在這種情況下是特里浮動。所以你的領域應該定義如下...

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

請確保在更改模式後重新索引,然後再次嘗試您的範圍查詢。

+0

謝謝,它解決了我的問題。 – Shafiq

0

範圍查詢在常規原始字段類型(例如float)上無法正常工作,因爲對於這些字段,在範圍查詢期間,lucene按照字典順序排序文檔,而不是數字順序,然後對其應用範圍。 Trie領域或可排序的領域應該做到這一點。此外,對於solr 5和更高版本,基元類型只支持trie字段。