如何使用全文搜索在MySQL中进行查询,以便获得如下所示的结果:
尼特人团结一致,而oogle得到谷歌
正如我们可以使用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的全文本性能最好-甚至有时会很烂。否则,我建议使用外部全文引擎,例如Solr或Sphinx。我认为Sphinx允许使用前缀和后缀通配符,而对其他不确定。
您可以返回MySQL的LIKE
子句,但是再次运行诸如LIKE '%nited states'
或的查询LIKE '%nited Stat%'
也会降低性能,因为它不能使用前几个字符的索引。'United Sta%'
并且'Unit%States'
可以,因为索引可以用于第一堆已知字符。
使用MySQL的全文本索引的另一个非常重要的警告是停用词列表和最小词长设置。例如,在共享主机环境中,您将被限制为大于或等于4个字符的单词。因此,搜索“ Goo”以获取“ Google”将失败。停用词列表也不允许使用常见的词,例如“和”,“也许”和“外部”-实际上,总共有548个停用词!同样,如果不使用共享主机,则相对容易修改这些设置,但是如果您使用共享托管,则会对某些默认设置感到恼火。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句