0

我正在对 30-40 个工厂记录数据库使用全文搜索。其中 80% 在一张桌子上。我正在以全文形式搜索名字和姓氏,因为全名可以以多种方式存储“比尔盖茨”“盖茨,比尔”“比尔和梅琳达盖茨”等。我们还有一个昵称数据库所以它将搜索“bill”、“will”、“william”等。查找昵称完全不需要时间,但是一旦我实现了包含昵称的查询,它现在需要更长的时间。

SELECT * FROM db1 
WHERE MATCH (Name) AGAINST (' +bill +gates 'IN BOOLEAN MODE) UNION ALL 
... (then the other 8 dbs the same) limit 500

相比:

SELECT * FROM db1 
WHERE MATCH (Name) AGAINST (' +("bill" "will" "william") +gates 'IN BOOLEAN MODE) UNION ALL 
... (then the other 8 dbs the same) limit 500

有没有办法加快这个速度?与 3-5 秒相比,搜索需要 40 多秒。像比尔盖茨这样的名字应该很容易达到 500 大关似乎需要更长的时间,即使它有更多的机会达到。

4

1 回答 1

0

使用搜索引擎而不是 MySql 会节省您的时间。看看 Solr 或 Sphinx。

Sphinx 有 mysql 插件。

于 2013-03-06T16:11:35.607 回答