因此,我已经实施并成功使用了Solr4。我必须说Solr 4很棒!无论如何,我成功地按距离进行了分类,并使用地理滤器将结果限制在某个区域。我现在想做的是将相关得分提高到距离的倒数。此页面讨论了它,但没有说该怎么做(http://wiki.apache.org/solr/spatialsearch)

我已经尝试了以下操作,但它给了我一个错误:

http://localhost:8983/solr/select/?q={!boost b=recip(geodist(), 1, 1000, 1000)}...

我得到的错误是:

org.apache.lucene.queryParser.ParseException: Expected identifier at pos 27 str='{!boost b=recip(geodist(), 1, 10 in ...

任何帮助,将不胜感激。谢谢!

有帮助吗?

解决方案

在Boost函数之后,您仍然需要指定查询的主要部分:

q={!boost b=recip(geodist(),1,1000,1000)}foo:bar&...

如果您只想在距离倒数的情况下提升,则可以使用通配符查询:

q={!boost b=recip(geodist(),1,1000,1000)}*&...

...或使用函数查询解析器:

q={!func}recip(geodist(),1,1000,1000)&...

您还需要指定LAT/长值和空间字段,以与地理学家函数的参数进行查询:

q={!boost b=recip(geodist(50.1, -0.86, myGeoField),1,1000,1000)}foo:bar&...

...或以查询字符串参数为主:

q={!boost b=recip(geodist(),1,1000,1000)}foo:bar&sfield=myGeoField&pt=50.1,-0.86

其他提示

只是为了补充说,我得到了更好的结果。

{!boost b=recip(geodist(),1,100,10)}

我不知道是什么原因造成的,但是我希望Solr提供有关该食谱参数和提升的参数的更多信息。当前文档 是缺乏。

旁注,这是我工作地点使用的距离提升。这与Solr文档网站上的一个不同。在提升开始之前,此增强功能将平等地对待许多千里特。这在某些情况下很有用,在某些情况下,您不希望相关性更改距离距离小。

您可以更改常数 25 要成为您希望提升相同的任何数量的公里。

您可以定义距离提升:

div(1.0, min(1000, max(25, geodist())))

distance boost plot

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top