Solr 整数范围 Facet
我的索引里包含了人们的信息,比如姓名、年龄、电话、电子邮件等等。
我在按年龄进行分组,类似于日期范围的功能。
我的年龄范围是:
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里发生的什么情况?
3 个回答
1
我对solr一无所知,但我猜它可能把你的范围当成字母顺序来处理,而不是数字。
你可以看看这个回答,里面有一些链接,讨论了一个非常相似的问题。
3
在网上查找资料时,我发现Solr会把所有数据都当作字符串来处理,即使你把它定义为整数。在Solr里,它依然是字符串:
<field name="age" type="integer" indexed="true" stored="true"/>
所以我需要做的是:
<field name="age" type="sint" indexed="true" stored="true"/>
如果你想对整数进行排序,使用这种方式是正确的。我猜“sint”这个类型就是专门为这个目的设计的。
谢谢!