※ 引述《sweetwords (米虫三號)》之銘言:
: 這是我們搜尋功能會用到的一段 sql 句
: 我們有將 TABLE 相關欄位做了全文索引,主要想找到符合變數的資料
: SELECT * FROM `TABLE_NAME` WHERE MATCH (COLUMN_NAME) AGAINST ('中文變數');
: 非常奇怪的是,當我下中文變數是「注意力」的時候
: 可以順利搜尋到幾筆資料
: 但是當我將中文縮減成「注意」的時候
: 卻完全搜尋不到任何資料 @_@"
這應該是 MySQL 沒錯吧?
有兩個可能的原因:
1. 查詢字詞太短,被 MySQL 自動忽略。
2. Fulltext Search 不支援中文,原因是 MySQL 中沒有中文斷詞機制
換句話說,它會將整句中文當成一個字,所以搜尋「注意」時搜尋不到「注意力」
另外,Fulltext Search 就我所知並沒有萬用字元,只有 modifier 這些特殊字元
有幾個方法你可以參考:
1. 改用效能非常差的 LIKE Search
2. 用 Lucene 之類的 Fulltext Search Engine
3. 另外存一份斷好詞、專門用來搜尋用的欄位,你可以用 Bigram 斷詞法
不過 Bigram 斷詞法斷出來會變成兩個字一組,而 MySQL 預設會忽略 3 個字
以下的查詢字詞,你還必須改 my.ini 的設定(但看你敘述查詢「注意力」查
得到東西,你應該改好這個部份了?)
你可以參考這篇 http://blog.bcse.info/wordpress-bigram-fulltext-search
「實作」的 Section
--
※ 編輯: bcse 來自: 59.115.217.101 (02/02 01:35)