通过 MySQL 数据库搜索以匹配字符串的最快方法是什么?

问题描述 投票:0回答:1

我需要搜索大约一百万条记录,以查明输入的公司名称是否在数据库中,如果不在,则根据数据库中存在的内容获取更改输入的建议。想必全文索引是解决这个问题的最佳方法?例如,如果输入是“Some Law Firm LLP”,但它不在数据库中作为公司名称,但“Some Law Firm”是我希望返回“Some Law Firm”作为建议。或者也许“某个新律师事务所”在数据库中,我希望将其返回。

我以前从未在数据库上实现过全文索引,所以真的不知道如何实现一个索引或创建适当的查询来返回输入更改建议。

我还担心 MySQL 不将 3 个字母的字符串视为单词,所以我如何解释像“BBC”这样的公司名称?我知道我可以使用类似的东西:

$q = "SELECT company_name FROM wfp_contacts2 WHERE MATCH (company_name) AGAINST ('".stripslashes(str_replace(""", "\"", ($query)))."' IN BOOLEAN MODE)"; 

测试数据库中是否存在完全匹配,这很好 - 但重点是获取建议。我真的不能只使用

LIKE %'company_name'%
,因为它太慢了,而且速度是必要的,因为一次将检查多达 700 个输入以获取建议,而带有通配符的
LIKE
语句对于一百万个来说太慢了记录。

是否至少有任何人都可以推荐的教程,以便我可以加快全文索引的速度?另外,如果有另一种方法可以做到这一点,我将很高兴听到它,因为这非常重要,而且老实说,我目前不知道该怎么办。

MySQL 信息: MySQL客户端版本:5.1.41 存储引擎:MyISAM

提前致谢。

php mysql full-text-search
1个回答
0
投票

您可以使用索引数据库/文档,例如Solr搜索引擎。

搜索结果更快,您还可以实施拼写检查,这有助于提供搜索单词的建议。

FYR http://lucene.apache.org/solr/features.html

© www.soinside.com 2019 - 2024. All rights reserved.