处理MySQL全文特殊字符

时间:2008-11-14 16:10:40

标签: mysql full-text-search

在布尔模式下使用MySQL全文搜索时,有一些像+和 - 这样的字符用作运算符。如果我搜索“C ++”之类的东西,它会将+解释为运算符。处理这些特殊字符的最佳做法是什么?

我目前使用的方法是将数据中的所有+字符转换为_plus。它还将&,@,/和#字符转换为文本表示。

2 个答案:

答案 0 :(得分:5)

使用MySQL的全文搜索很难做到这一点。你正在做什么(用预定义的字符串替换特殊字符)是唯一的方法。

您可能希望考虑使用Sphinx Search。它显然支持转义特殊字符,并且所有报告都明显快于默认的全文搜索。

答案 1 :(得分:4)

MySQL在构建全文索引时忽略了什么令牌是相当野蛮的。我会说它遇到“C ++”一词时它可能会删除加号字符,只留下C,然后忽略它,因为它太短了。您可以将MySQL配置为包含单字母单词,但它并未针对此进行优化,我怀疑您是否可以按照您想要的方式处理加号字符。

如果您需要一个可以配置此类内容的良好内部搜索引擎,请查看已移植到各种语言Luceneincluding PHP (in the Zend framework)

或者如果你需要更多的“标记”而不是文本搜索,那么其他一些东西可能更合适。