全文搜索与空间查询

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、PostgreSQLSQL 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

问候, 西蒙娜。

【讨论】:

以上是关于全文搜索与空间查询的主要内容,如果未能解决你的问题,请参考以下文章

SqlServer——全文索引

最新的Azure SQL数据库实例中的Azure搜索服务与全文搜索?

Lucene学习之入门

深入研究查询Elasticsearch,过滤查询和全文搜索

日志搜集分析-- 自定义elasticsearch数据查询

nodejs + mongodb实现模糊查询与全文搜索