2016-08-17 41 views
0

我已經在Solr的文件添加2場使用weight_value & nofyears_1工作。Solr的範圍查詢不以適當的方式對一些領域

模式爲兩個字段是如下

<field name="weight_value" type="string" indexed="true" stored="true" /> 
<field name="nofyears_1" type="string" indexed="true" stored="true" /> 

兩者都存儲爲它存儲數字值。這裏

問題是範圍查詢完美的作品上使用weight_value領域,但在nofyears_1場不起作用。

這樣

weight_value:[40 TO 50] => Get all the results only between 40 TO 50 

nofyears_1:[1 TO 10] => Doesn't get results between 1 TO 10, but it fetches the result of 1 & 10 only. 

還有在,

nofyears_1:[1 TO 5] => It fetches the result of 1, 5 & 15 only. 

爲什麼我的範圍查詢不會在這方面的工作?

兩個領域都沒有多重價值

回答

2

如果你想與數值範圍查詢,使用數字字段。現在的問題是,您使用的是字符串字段,以及字符串的排序依次爲:

1 
10 
11 
... 
2 
20 
... 
40 
41 
.. 
49 
50 

..所以,如果你在一個字符串字段查詢[1 TO 10],你將得到的只是第一兩個條目後面(而40至50將檢索所有值從40到50 - 如果你有項400或499,他們會也包括在內):

.. 
-- 
1 
10 
-- 
11 
... 

如果使用正確的字段類型(整數/ int在這種情況下)爲您的數據,範圍查詢將按預期工作。

請記住,在更改字段類型後(這取決於您的設置如何,可能涉及更改schema.xml中的定義或通過託管模式API),您必須重新編制索引。

+0

謝謝..它解決了我的問題。 –