我添加了2个字段 weight_value &在solr文件中 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.
为什么我的范围查询不适用于此字段?
这两个字段都是字符串,没有多个值
答案 0 :(得分:2)
如果您希望范围查询具有数值,请使用数字字段。现在的问题是你正在使用字符串字段,字符串的排序顺序为:
1
10
11
...
2
20
...
40
41
..
49
50
..所以,如果您在字符串字段中查询[1 TO 10]
,您将只返回前两个条目(而40 TO 50将检索40到50之间的所有值 - 如果您有条目400或499他们也包括在内):
..
--
1
10
--
11
...
如果您为数据使用正确的字段类型(在本例中为整数/ int),则范围查询将按预期工作。
请记住,在更改字段类型后,您必须重新编制索引(这取决于您的设置,包括更改schema.xml
中的定义或通过托管架构API)。