如何在Solr 7中实现w/ Geo Solr的全文组合?
关于这一点:2/spatial search.html
我必须进行将全文w/ geo空间结合起来的查询。例如:
box AND full text或spatial sort AND full text.
我无法找到一个很好的查询字符串示例来产生所需的结果。我希望这是一个纯查询字符串,而不是一些Java方法,因为我在Java以外的不同技术上使用它。Solr是非常深刻和令人困惑的,我知道我必须读更多,但没有好的例子,在任何地方的在线我发现。
所需的查询字符串示例
[solr]/select?fq={!bbox sfield=point}&pt=34.04506799999999,-118.260849&d=10000&sort=geodist() asc&{!geofilt}&sfield=point&q=Panini因此,在这种情况下,将排序的距离,但也过滤一些完整的文本“一些文本”的价值。
如果不能做到这一点,我相信在弹性搜索是可能的,但这些(Solr和弹性搜索)都是建立在Lucene之上的,因此看起来,如果两者都有效的话,它应该在其中一个上工作,但也可以为弹性搜索提供一个答案。
示例返回
{
"responseHeader": {
"status": 0,
"QTime": 2,
"params": {
"q": "Panini",
"pt": "34.04506799999999,-118.260849",
"d": "10000",
"{!geofilt}": "",
"fq": "{!bbox sfield=point}",
"sort": "geodist() asc",
"sfield": "point"
}
},
"response": {
"numFound": 0,
"start": 0,
"docs": []
}
}文档中确实包含了这个短语“Panini”,但没有返回。可能是由于Solr 7中处理全文的默认方式造成的?它使用的是相同的点,其中使用的术语'Panini‘和字段点是org.apache.solr.schema.PointType类型。
更新
最后我放弃了Solr去寻找弹性搜索。与非常容易使用的弹性搜索相比,Solr在其奇怪的方式上非常恼人。事情就像你所期望的那样运作,而不必去挖掘怪癖。
发布于 2018-01-19 20:18:16
我将我的答案改编为solr 7.2.1示例:
启动solr by:./bin/solr start -e techproducts
我还可视化了google地图中的数据:https://www.google.com/maps/d/u/0/viewer?ll=42.00542239270033%2C-89.81213734375001&hl=en&hl=en&z=4&mid=16gaLvuWdE9TsnhcbK-BMu5DVYMzR9Vir
你需要这些查询参数
盒过滤器绑定的:
geo过滤器查询解析器bbox需要进一步的参数:
排序:
全文查询:
对solr示例数据的完整示例查询:
Simple: http://localhost:8983/solr/techproducts/select?fq={!bbox}&sort=geodist()%20asc&sfield=store&pt=36.35,-97.51&d=1200&q=ipod&fl=name,store
UI: http://localhost:8983/solr/techproducts/browse?fq={!bbox}&sort=geodist()%20asc&sfield=store&pt=36.35,-97.51&d=1200&q=ipod
结果如预期:
提示
发布于 2020-03-25 18:43:03
在你的例子中,你必须把全文搜索评分和空间距离结合起来。
所以如果您的查询如下所示:
/select?fq={!bbox sfield=point}&pt=34.04506799999999,-118.260849&d=10000&sort=geodist() asc&{!geofilt}&sfield=point&q=Panini您应该更改sort参数并将其移除或将其设置为score desc。这样,您就可以根据全文搜索查询中的分数进行排序。
为了考虑空间部分,您需要在查询中包含一个增强函数。在大多数情况下--从感兴趣的角度看,文档越近越好,所以您可能希望包括一个执行X/distance的增强功能。X可以和1一样简单,函数本身也可以更复杂。要在dismax查询中这样做,您可以使用bf参数,比如bf=div(1,geodist())。
试试看,它应该有效,但当然需要一些调整。
https://stackoverflow.com/questions/48348312
复制相似问题