看板 Database 關於我們 聯絡資訊
※ 引述《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)