[英]Solr Range Query Does not work in Proper way for some fields
我在solr文檔中添加了2個字段weight_value和nofyears_1 。
兩個字段的架構如下
<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.
為什么我的范圍查詢在該字段上不起作用?
這兩個字段都是string , 沒有多個值
如果要使用數字值進行范圍查詢,請使用數字字段。 現在的問題是您正在使用字符串字段,並且字符串的排序順序為:
1
10
11
...
2
20
...
40
41
..
49
50
..因此,如果您要在字符串字段中查詢[1 TO 10]
,則只會返回前兩個條目(而40 TO 50將從40到50檢索所有值-如果您輸入的值為400或499(它們也將包括在內):
..
--
1
10
--
11
...
如果對數據使用適當的字段類型(在這種情況下為integer / int),則范圍查詢將按預期工作。
請記住,更改字段類型后必須重新索引(這取決於您的設置方式,涉及更改schema.xml
的定義或通過托管模式API)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.