Solr Facet范围与整数

时间:2009-12-14 15:28:45

标签: python django solr

我的索引包含人员信息,姓名,年龄,电话邮箱等。

我正面对年龄。我组的年龄有点像日期范围功能。

我的范围是:

    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 个答案:

答案 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,其中包含指向讨论非常类似问题的各种文档的链接