0

我正在构建一个项目,并且需要一种超快速的方式来提供基于部分文本匹配结果的自动完成提要。

我将仅对数据库中的一个字段进行索引/搜索,尽管数据库行将包含其他数据,但我不会对这些字段进行索引。我将有大约。25k 行。

要求:

  • 必须匹配该字段中的任何位置(开始键入“Lor”、“Ipsum”、“olor”、“Sit Amet”时会找到 Lorem Ipsum Dolor Sit Amet)
  • 需要非常快速地在 JSON 提要中返回结果(尽管数据的原始来源并不重要)
  • 针对高流量的可扩展解决方案

我已经审查了几个选项...

  • 在 mongoDB 中使用类似查询的 MongoDB
  • ElasticSearch - 不确定我需要做的事情是否有点矫枉过正,并且没有看到任何匹配上述部分文本的例子
  • SQL LIKE 查询,但想象这还不够快?

编程语言不是什么大问题,但首选 Python 或 PHP。

4

2 回答 2

1

这听起来像是典型的全文搜索。根据您的应用程序和数据所在的数据库,进程内的嗖嗖声可能会满足您的需求(如 Lucene for Java)。

您说得对,LIKE与实际的全文索引相比,SQL 查询的执行情况非常糟糕。MongoDB 可能也不是一个很好的选择,但可以根据您的建议进行调整。

于 2013-01-25T12:55:35.933 回答
1

正如其他人所提到的,执行语言和句法分析(标记化、词干化、大小写和重音规范化等)的全文索引将为您提供最佳结果。但是,如果没有一定数量的设置和配置,就不会出现这种情况。

查看 Solr 的 Suggester 组件:http ://wiki.apache.org/solr/Suggester ,并且有一个新组件 - 我认为它被称为 AnalyzingSuggester 或类似的东西,我认为它仅适用于 Lucene,所以如果你想要您可以使用它的内存解决方案(尽管仅限 Java)。

于 2013-01-25T13:00:21.903 回答