我正在寻找一种方法来构建"反向"范围查询,即不是定义字段
<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个值(即,间隔的上限和下限因此而异)。
答案 0 :(得分:3)
described in this blog post的多边形字段必须是您要找的。 p>
它包含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>