如何在mysql中使用全文搜索进行查询,得到如下结果:
Nited联合了Oogle联合了Google
我们可以使用like运算符:%nited and %oogle

最佳答案

不幸的是,您不能使用mysql全文索引来执行此操作。不能立即从索引检索'*nited states',因为左字符是索引的最重要部分。但是,您可以搜索'United Sta*'

// the only possible wildcard full-text search in MySQL
WHERE MATCH(column) AGAINST ('United Sta*' IN BOOLEAN MODE)

mysql的全文在搜索句子中的整个单词时表现最好——即使有时这也很糟糕。否则,我建议使用外部全文引擎,如SolrSphinx。我认为sphinx允许前缀和后缀通配符,对其他的不太确定。
您可以回到mysql的LIKE子句,但是同样,运行LIKE '%nited states'LIKE '%nited Stat%'之类的查询也会影响性能,因为它不能在前几个字符上使用索引。'United Sta%''Unit%States'都可以,因为索引可以用于第一组已知字符。
使用mysql全文索引的另一个非常重要的警告是stop word list和minimum word length settings。例如,在共享宿主环境中,您只能使用大于或等于4个字符的单词。因此,搜索“goo”以获取“google”将失败。The stop-word list也不允许使用“and”、“maybe”和“outside”等常用词-事实上,总共有548个停止词!同样,如果不使用共享主机,这些设置相对容易修改,但如果您使用共享主机,则会对某些默认设置感到恼火。

08-06 22:49