我在schema.xml(Solr 4.1)中有以下字段定义:
<field name="locationCoordinates" type="location_rpt" indexed="true" stored="true" multiValued="true" />
现在我想基本上做以下查询:
过滤它们在地理点的给定距离内的坐标(此部分已经有效)并将距离返回到最近的点。
或者在现实生活中:
我们有文章。每篇文章都可以在多个商店中获得(仅保存为地理位置)(N:N,但我们只有使用Solr建模的文章)。现在我想查询给定点范围内的文章,如果它们也返回到该点的距离。
如何使用Solr-Queries实现这一目标?
答案 0 :(得分:2)
如果我理解正确,你需要的是地理分类,对吧?
要实现同样的目标,您必须在Lucene中使用自定义排序功能。
如果按分数,id,字段排序是不够的,Lucene允许您通过提供自己的FieldComparatorSource抽象基类的子类来实现自定义排序机制。
步骤:
1)Sort对象在实例化期间接受FieldComparatorSource类型实例。
2)扩展FieldComparatorSource
3)你要在setNextReader()中的FieldComparatorSource中使用FieldCache加载坐标
4)对于每个文档,您可以计算距离原点的距离并返回{-1,0,1}中的一个
实际上,整个例子在以下链接中给出。但是你要报名参加免费试用。