Solr 范围查询对于某些字段无法以正确的方式工作

问题描述 投票:0回答:1

我在 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" />

两者都存储为

string
,因为它存储数值。

这里的问题是范围查询在

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
,并且没有多个值。

solr schema
1个回答
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)。

© www.soinside.com 2019 - 2024. All rights reserved.