我正在构建一个项目,并且需要一种超快速的方法来提供基于部分文本匹配的结果的自动完成源。
我将仅对数据库中的一个字段进行索引/搜索,但数据库行将包含其他数据,我不会将这些字段编入索引。我会有约。 25k行。
要求:
我已经审查了几个选项......
编程语言不是一个问题,但Python或PHP将是首选。
答案 0 :(得分:1)
这听起来像是典型的全文搜索。根据您的应用程序和数据所在的数据库,进程内whoosh可能会满足您的需求(如Lucene for Java)。
你说得对,SQL LIKE
查询与实际的全文索引相比会表现得非常糟糕。 MongoDB可能也不是很合适,但是可以调整大致按照你的建议做。
答案 1 :(得分:1)
正如其他人所提到的,执行语言和句法分析(标记化,词干化,大小写和重音标准化等)的全文索引将为您提供最佳结果。但是,如果没有一定的设置和配置,就不会有这种情况。
查看Solr的建议组件:http://wiki.apache.org/solr/Suggester,还有一个新组件 - 我认为它叫做AnalyticsSuggester或者其他一些,我认为它只适用于Lucene,所以如果你想要一个内存解决方案你可以使用它(仅限Java)。