全文搜索与空间查询
Posted
技术标签:
【中文标题】全文搜索与空间查询【英文标题】:Fulltext search together with spatial query 【发布时间】:2014-05-01 07:23:38 【问题描述】:我们有一些地理数据,您可以将它们视为地点或地名。
我们有将近六十万条记录,每条记录都有以下字段:
id name lng lat ....
现在我们要根据这个字段进行搜索并支持模糊搜索,但是使用like
by database 不是一个好主意。
所以我们尝试Lucene
进行全文搜索,这对于name
字段查询很有效,但我不知道何时查询并将name
字段和lng
lat
字段混合在一起.
例如,用户可能想要查询包含关键字“xxx”的地点,该地点包含某个点周围,lat:30,lng 40,距离为 100 米。
这是一种地理查询,我认为最好通过postgis之类的空间数据库查询,但是`name字段呢?
【问题讨论】:
您使用的是什么 DBMS? 我们现在使用access,但是我们打算postgresql。 【参考方案1】:HGUser、PostgreSQL 和 SQL Server(2008 年以后 - 2012 年最好)都是满足您要求的绝佳选择。两者都支持 FULL TEXT 搜索和 Spatial 带有 Indexing 的查询(作为单数或组合的 WHERE 子句)。
只需确保从您的纬度/经度坐标构建一个地理/几何对象,以便从空间索引中受益。
对于 PostgreSQL
您可以在用户手册中阅读有关地理/几何的信息
http://www.postgresql.org/files/documentation/pdf/9.3/postgresql-9.3-A4.pdf(第 8.8 节)
全文将在同一文档的第 12 章中找到。
对于 SQL Server
您可以在
阅读有关地理/几何的信息http://technet.microsoft.com/en-us/library/ff848797.aspx
全文索引在
http://technet.microsoft.com/en-us/library/ms142571.aspx
【讨论】:
与 Lucene 相比,PostgreSQL 的 FULL TEXT 怎么样? @hguser 老实说,我对 lucene 的了解还不够,无法提供好的建议。长期以来,我的偏好一直是 SQL Server,但 PostgreSQL 拥有经过验证的快速优雅的 Spatial 模型,不容小觑。 好的,我试试postgresql,谢谢。 :)【参考方案2】:Ciao, 您有很多选择,而无需触及成熟的空间 DBMS。 我实际上会调查:
lucene 空间 https://www.openshift.com/blogs/free-text-and-spatial-search-with-spatial4j-and-lucene-spatial
SolR https://cwiki.apache.org/confluence/display/solr/Spatial+Search
弹性搜索 www.elasticsearchtutorial.com/spatial-search-tutorial.html
问候, 西蒙娜。
【讨论】:
以上是关于全文搜索与空间查询的主要内容,如果未能解决你的问题,请参考以下文章