2008-11-14 67 views
5

在布爾模式下使用MySQL全文搜索時,會使用+和 - 等特定字符作爲運算符。如果我搜索類似「C++」的東西,它會將+解釋爲運算符。處理這些特殊字符的最佳做法是什麼?處理MySQL全文特殊字符

我正在使用的當前方法是將數據中的所有+字符轉換爲_plus。它還將&,@,/和#個字符轉換爲文本表示。

回答

4

沒有辦法很好地使用MySQL的全文搜索來做到這一點。你正在做什麼(用預定義的字符串替換特殊字符)是唯一的方法。

您不妨考慮改用Sphinx Search。它顯然支持轉義特殊字符,並且所有報告都比默認的全文搜索快得多。

3

MySQL在構建全文索引時忽略它的標記是相當殘酷的。我想說,在遇到術語「C++」的地方,它可能會去掉加號字符,只留下C,然後忽略它,因爲它太短。你可能可以配置MySQL以包含單字母單詞,但它並沒有爲此優化,我懷疑你可以讓它處理你想要的加號字符。

如果您需要一個良好的內部搜索引擎,您可以配置這樣的事情,請檢查Lucene已被移植到各種語言including PHP (in the Zend framework)

或者,如果您比'文字搜索'更需要'標記',那麼其他內容可能更適合。