2013-12-19 238 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