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

时间:2016-09-08 09:23:37

标签: mysql full-text-search full-text-indexing

我需要搜索大约一百万条记录,以确定输入的公司名称是否在数据库中,如果不是,则根据数据库中存在的内容获取更改输入的建议。推测FULLTEXT指数是最好的方法吗?例如,如果输入的是“某律师事务所律师事务所”。但这不是作为公司名称在数据库中,而是一些律师事务所'我想要一些律师事务所'作为建议返回。或者也许是一些新的律师事务所'是我想要的数据库返回。

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

我也担心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语句是百万条记录太慢了。

是否至少有任何人都可以推荐的教程,以便我可以快速完成FULLTEXT索引?此外,如果有另一种方式这样做,我将很高兴听到它,因为这是非常重要的,我真的不知道该怎么办。

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

提前致谢。

1 个答案:

答案 0 :(得分:0)

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

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

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