如何通过geodist()的反向提高Solr相关性得分

Chr*_* L. 4 lucene solr distance geospatial solr-boost

所以我已经实现并成功使用了Solr 4.我必须说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 ...

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

小智 11

您仍需要在boost函数后指定查询的主要部分:

q={!boost b=recip(geodist(),1,1000,1000)}foo:bar&...
Run Code Online (Sandbox Code Playgroud)

如果您只对距离的倒数感兴趣,可以使用通配符查询:

q={!boost b=recip(geodist(),1,1000,1000)}*&...
Run Code Online (Sandbox Code Playgroud)

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

q={!func}recip(geodist(),1,1000,1000)&...
Run Code Online (Sandbox Code Playgroud)

您还需要指定lat/long值和空间字段,以作为geodist函数的参数进行查询:

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

...或者作为查询字符串参数计算出来:

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