具有整数的Solr刻面范围

2024-05-23 22:42:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我的索引包含人的信息,姓名,年龄,电话和电子邮件等等

我在和年龄打交道。我把年龄分组有点像日期范围功能。在

我的范围是:

    0 to 10
    11 to 20
    21 to 30
    31 to 40 etc etc

当我进行查询时:

^{pr2}$

它返回21到30范围内我想要的所有年龄,但也返回3岁。在

    ?q=*:*&facet=true&fq=age:[11+TO+20]

这会执行相同的操作,但返回的是2岁。在

    ?q=*:*&facet=true&fq=age:[0+TO+10]

这会执行相同的操作,但返回的是年龄1。 有人能给我解释一下吗?在


Tags: to功能信息trueage电子邮件etcfacet
3条回答

在网上搜索时,我发现Solr将所有数据索引为字符串,即使您将其定义为整数。它仍然是Solr中的一个字符串:

<field name="age" type="integer" indexed="true" stored="true"/>

所以我需要做的是:

<field name="age" type="sint" indexed="true" stored="true"/>

如果你想对你的整数排序,我假设“sint”类型是专门为此设计的。在

干杯

在您的请求中,您没有任何facet queries。您正在使用filter queries。这会缩小你的成绩。在

也许你可以试着加一些方面.查询,并将结果从面.计数在你上面的问题上。至少这会告诉你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]

我对solr一无所知,但我想它会把你的范围按字母顺序而不是数字来处理。在

您可能想看看this answer,它有指向讨论一个非常相似问题的各种文档的链接

相关问题 更多 >