Solr查询值是否与多个间隔之一匹配

时间:2012-04-25 09:00:35

标签: solr range

我正在寻找一种方法来构建"反向"范围查询,即不是定义字段

<field name="myfield" type="int" ...>

然后在查询中指定间隔

myfield:[x TO y]

我宁愿定义一个&#34; interval字段&#34;在我的架构中

<field name="myfield" type="<whatever_fits_here>" multivalued="true" ...>

这样该字段的值可能是,例如,

[100 TO 250], [460 TO 800], [970 TO 1040]

然后,查询将包含此字段的确切值,以便如果该值包含在任何时间间隔内,则记录将匹配。

注意:此处不能选择将间隔中的所有可能值收集到多值字段中,这会导致每个记录在很多情况下大约10000个值(即,间隔的上限和下限因此而异)。

2 个答案:

答案 0 :(得分:3)

described in this blog post的多边形字段必须是您要找的。

它包含location(Double,Double)类型的架构定义:

<fieldType name=”location” class=”solr.PointType” dimension=”2″ subFieldType=”double”/>
<field name=”store” type=”location” indexed=”true” stored=”true”/>

一个查询:

q=store:[44,-90 TO 46,-94]

因此,您可以创建范围(Int,Int)字段类型和使用它的多值字段。

q=myfield:[75,* TO *,75] //a range that includes 75
q=myfield:[50,* TO *,100] //a range that includes 50-100

免责声明:我自己从未使用过poly字段。我不知道这些查询是如何在多值字段上工作的。

答案 1 :(得分:0)

我会在UpdateProcessor上执行此操作,您可以查看该字段的值,并将另一个field2设置为'range1','range2'等,具体取决于它所属的位置,然后查询field2。< / p>