2013-05-07 117 views
2

我有一个古怪的Solr多值域,我似乎可以重复复制。查询Solr多值域使用范围

我有一套titles其中有一个域名为special_offer_type。此字段的类型为:

[ 
    "5", 
    "3", 
    "0" 
] 

查询工作正常,如果我做的:

special_offer_type:4 

,我得到5个结果反馈,但是,如果我这样做:

special_offer_type:[3 TO *] 

我得到只有两个结果返回。

似乎Solr正在处理多值域的范围,因为该范围必须满足该域中的所有值。

我无法在文档中找到对此的直接引用,所以我的问题是这种行为是否可以预料?

+2

什么是special_offer_type的字段类型?必须是int来支持数字范围查询 – Jayendra 2013-05-07 11:34:38

+0

@Jayendra它是类型的字符串,如问题所示,我确实改变了它,这部分工作,如果你想发布作为答案我会标记它 – Sammaye 2013-05-08 07:08:58

+0

当然..添加为一个回答。 – Jayendra 2013-05-08 08:07:09

回答

1

尝试使用Int字段类型来支持正确的整数范围查询

另请检查sint vs integer。

Documentation: -

可排序域类型像烧结靶,sdouble是有点用词不当。在上述意义上,它们不需要排序,但在执行RangeQuery查询时需要 。实际上,Sortables参考 这个概念,使得按字典顺序将数字排序为 字符串。也就是说,如果没有这样做,数字1..10将 按字典顺序排列为1,10,2,3 ...使用sint,但是补救措施 这个。但是,如果您不需要执行RangeQuery查询,并且只有 需要在该字段上进行排序,则只需使用int或double或 等效适当的类。你将节省自己的时间和记忆。