2008-11-14 68 views
5

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

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

回答

4

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

您不妨考虑改用Sphinx Search。它显然支持转义特殊字符,并且所有报告都比默认的全文搜索快得多。

3

MySQL在构建全文索引时忽略它的标记是相当残酷的。我想说,在遇到术语“C++”的地方,它可能会去掉加号字符,只留下C,然后忽略它,因为它太短。你可能可以配置MySQL以包含单字母单词,但它并没有为此优化,我怀疑你可以让它处理你想要的加号字符。

如果您需要一个良好的内部搜索引擎,您可以配置这样的事情,请检查Lucene已被移植到各种语言including PHP (in the Zend framework)

或者,如果您比'文字搜索'更需要'标记',那么其他内容可能更适合。