2013-12-19 199 views
6

如何使用全文搜索,所以我们可以得到导致像波纹管在MySQL查询:通配符搜索

nited被团结,oogle获取谷歌


正如我们可以使用LIKE运算符:%nited and %oogle

+0

这将有助于了解其来源或其中的一部分 – devanand

+0

您需要展开您的问题。就目前而言,它将被关闭。 – TheCarver

回答

15

不幸的是,你不能使用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。我认为斯芬克斯允许使用前缀和后缀通配符,但不确定其他人。

你可以回到MySQL的LIKE条款,但同样,像LIKE '%nited states'LIKE '%nited Stat%',运行查询也将受到影响性能,因为它不能使用索引的前几个字符。 'United Sta%''Unit%States'都可以,因为索引可以用于第一批已知字符。

使用MySQL的全文索引的另一个相当重要的警告是停用词列表和minimum word length settings。例如,在共享主机环境中,您将被限制为大于或等于4个字符的单词。因此,搜索'Goo'以获得'Google'将会失败。 The stop-word list也不允许使用'and','maybe'和'outside'等常用词 - 实际上,共有548个词组合在一起!再一次,如果不使用共享主机,这些设置相对容易修改,但如果您是这样,那么您会因某些默认设置而感到恼火。

+0

感谢您的时间为我的问题。所以现在,狮身人面像支持这种查询。 – harry34

+0

@ harry34,我认为是的,是的,但也需要专用/虚拟服务器,而不是共享主机。与MySQL的FT搜索相比,Sphinx或Solr的速度是惊人的。这是一个不同的概念 - 我建议首先仔细阅读。 – TheCarver

+0

我不认为有任何共享主机是支持5.6版本的mysql inndob +全文搜索。 – harry34