【发布时间】:2018-06-29 02:53:19
【问题描述】:
如何在 Solr 7 中将全文与地理空间相结合?
对此:https://lucene.apache.org/solr/guide/7_2/spatial-search.html
我必须进行 COMBINE 全文与地理空间的查询。例如:
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
所以在这种情况下,会按距离排序,但也会按某些全文“某些文本”值进行过滤。
如果无法做到这一点,我相信在 Elastic Search 中是可能的,但是这些(Solr 和 Elastic Search)都是建立在 Lucene 之上的,所以看起来它应该在两者上都可以工作,但可以随意提供也可以回答 Elastic Search。
示例返回
{
"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,转而使用 Elastic Search。与非常易于使用的 Elastic Search 相比,Solr 的奇怪方式非常令人讨厌。事情就像您期望的那样工作,而无需深入研究怪癖。
【问题讨论】: