我在schema.xml (Solr4.1)中有以下字段定义:
<field name="locationCoordinates" type="location_rpt" indexed="true" stored="true" multiValued="true" />现在,我想基本上执行以下查询:
对坐标进行过滤,无论它们位于某个地理点的给定距离内(此部分已起作用),并将距离返回到最近的点。
或者在现实生活中:
我们有文章。每个文章都可以在多个商店购买(只保存为地理位置) (N:N,但我们只有Solr建模的文章)。现在我想查询在给定点范围内的文章,如果它们也返回到该点的距离。
我如何使用Solr-Queries来实现这一点?
发布于 2013-03-11 03:27:02
如果我没理解错的话,你需要的是一个地理排序,对吧?
要实现同样的效果,您必须使用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
https://stackoverflow.com/questions/15297835
复制相似问题