parsing - 出于地理编码目的解释文本输入的最佳方法是什么?

标签 parsing full-text-search

考虑以下站点:

http://maps.google.com

它有一个主文本输入,用户可以在其中输入公司、国家、省份、城市、地址和邮政编码。我想知道哪种方法是实现这样的搜索的最佳方法。我意识到谷歌地图可能使用全文搜索,在同一个表中包含各种数据,并且它有可能有一个解析器对输入进行分类(即在数字(如邮政编码和坐标)与文本(如商业)之间进行分类和地址)。

随着数据分布在许多表和系统中,解析器是必不可少的。解析器可以从正则表达式构建,也可以使用人工神经网络和遗传算法等 IA 工具构建。

您会推荐哪种方法?

最佳答案

最好将所有表中的数据聚合到搜索索引中。 Lucene 是一个免费搜索引擎,类似于 Google 搜索引擎的工作方式(倒排索引),它应该允许您相对轻松地通过任何这些值或它们的任意组合进行搜索。

http://lucene.apache.org/java/docs/

Lucene 带有自己的查询语言(同样,与 Google 或任何其他互联网搜索网站的语法非常相似)。使用 Lucene 之类的东西的唯一缺点是您需要构建其索引。您不会直接查询数据库(这可能会变得非常复杂......倒排索引几乎是为您想要做的事情而设计的),因此您需要定期从数据库中收集新信息并将其添加到索引中。可能还需要重建索引以删除不需要的数据。

使用 Lucene,您可以获得大多数人都熟悉的非常灵活的查询语法(因为几乎每个人都会搜索互联网),它的性能非常好,而且并不是非常复杂。通过使用 Lucene,您可以避免使用正则表达式(这不是性能最高的文本搜索机制),并且您不必编写自己的解析器。除了构建 Lucene 索引生成器并弄清楚如何查询该索引需要一点学习曲线之外,应该是双赢的。

关于parsing - 出于地理编码目的解释文本输入的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/884736/

相关文章:

java - SimpleDateFormat 中的解析不准确

python - Django 的搜索功能

database - 在 Postgresql 上使用部分字符串进行全文搜索

php - MySQL 全文搜索返回重复行

Java:解析带有嵌套节点的 XML 时遇到问题

c - 如何使用 sscanf() 解析这行文本?

go - blevesearch 如何对结果进行分页?

java - 文本处理以识别词性

javascript - 我如何将此 PCRE 正则表达式转换为 ECMAScript (JS) 正则表达式以解析街道号码和地址?

c - 如何在不编写完整解析器的情况下将部分源程序转换为库调用?