我试图做使用Solr的距离范围内的搜索。
我知道它很容易为5公里范围内筛选做搜索&q=*:*&fq={!geofilt pt=45.15,-93.85 sfield=store d=5}
什么我以后是怎么做同样的事情,如果我期待在一系列的说5 10公里 ?
谢谢
我试图做使用Solr的距离范围内的搜索。
我知道它很容易为5公里范围内筛选做搜索&q=*:*&fq={!geofilt pt=45.15,-93.85 sfield=store d=5}
什么我以后是怎么做同样的事情,如果我期待在一系列的说5 10公里 ?
谢谢
这里有几个方法可以解决这个。 所以很明显的查询进入过滤器查询(“FQ”参数),因为目的不是修改分数。 让我们假设的这些参数在请求URL设置(虽然他们有没有被放在那里):
pt=45.15,-93.85&sfield=store
这是一种方法:
_query_:"{!geofilt d=10}" -_query_:"{!geofilt d=5}"
我用_QUERY_ Solr的语法黑客进入一个子查询提供了机会,从Lucene的一个切换查询分析器地理之一。
这里的另一个办法,可能是最快的:
{!frange l=5 u=10}geodist()
这一个是一个函数查询返回的距离,然后将其限制在所需的范围。 这可能是更快,因为它每一次而不是两次像以前将评估每个文档。
您可能要将这是不可缓存和使少得多然后检查每个文档添加一个BBOX过滤器。 这里是最后的结果 (未网址转义):
pt=45.15,-93.85&sfield=store&fq={!frange l=5 u=10 cache=false cost=100}geodist()&fq={!bbox d=10}