是否可以在geodist中使用multiValued字段

时间:2013-03-08 15:46:10

标签: solr lucene geospatial

我在schema.xml(Solr 4.1)中有以下字段定义:

<field name="locationCoordinates" type="location_rpt" indexed="true" stored="true" multiValued="true" />

现在我想基本上做以下查询:

过滤它们在地理点的给定距离内的坐标(此部分已经有效)并将距离返回到最近的点。

或者在现实生活中:

我们有文章。每篇文章都可以在多个商店中获得(仅保存为地理位置)(N:N,但我们只有使用Solr建模的文章)。现在我想查询给定点范围内的文章,如果它们也返回到该点的距离。

如何使用Solr-Queries实现这一目标?

1 个答案:

答案 0 :(得分:2)

如果我理解正确,你需要的是地理分类,对吧?

要实现同样的目标,您必须在Lucene中使用自定义排序功能。

如果按分数,id,字段排序是不够的,Lucene允许您通过提供自己的FieldComparatorSource抽象基类的子类来实现自定义排序机制。

步骤:

1)Sort对象在实例化期间接受FieldComparatorSource类型实例。

2)扩展FieldComparatorSource

3)你要在setNextReader()中的FieldComparatorSource中使用FieldCache加载坐标

4)对于每个文档,您可以计算距离原点的距离并返回{-1,0,1}中的一个

实际上,整个例子在以下链接中给出。但是你要报名参加免费试用。

Link to Custom sort in the book Lucene in Action 2