我的索引包含人员信息,姓名,年龄,电话邮箱等。
我正面对年龄。我组的年龄有点像日期范围功能。
我的范围是:
0 to 10
11 to 20
21 to 30
31 to 40 etc etc
当我查询时:
?q=*:*&facet=true&fq=age:[21+TO+30]
它会在21到30的范围内返回我想要的所有年龄,但它也会返回3岁。
?q=*:*&facet=true&fq=age:[11+TO+20]
这也是一样,但它会返回2岁。
?q=*:*&facet=true&fq=age:[0+TO+10]
这也是一样的,但它会返回1岁。 任何人都可以向我解释一下 - 这是一个solr?
答案 0 :(得分:3)
在您的请求中,您没有facet queries。您正在使用filter queries。这将缩小你的结果。
也许你可以尝试在你的请求中添加一些facet.query,并将结果从facet.counts区域复制到上面的问题中。至少这将告诉你solr认为在不同年龄范围内有多少结果:
&facet.query=age:[21+TO+30]&facet.query=age:[11+TO+20]&facet.query=age:[0+TO+10]&facet.query=age:[*+TO+2]&facet.query=age:[*+TO+3]
答案 1 :(得分:3)
通过在网上搜索,我发现Solr将所有数据都索引为字符串 - 即使您将其定义为整数。它在Solr中仍然是一个字符串:
<field name="age" type="integer" indexed="true" stored="true"/>
所以我需要做的是:
<field name="age" type="sint" indexed="true" stored="true"/>
如果您想订购整数,我认为“sint”类型是专门为此设计的。
干杯
答案 2 :(得分:1)
我对solr一无所知但我猜它会将你的范围视为字母而不是数字。
您可能需要查看this answer,其中包含指向讨论非常类似问题的各种文档的链接