Solr范围查询对某些字段无法正常工作

时间:2016-08-17 11:27:10

标签: mysql solr schema

我添加了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.

为什么我的范围查询不适用于此字段?

这两个字段都是字符串没有多个值

1 个答案:

答案 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)。