6

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

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

4

2 回答 2

5

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

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

于 2008-12-28T10:45:01.650 回答
4

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

如果您需要一个好的内部搜索引擎,您可以在其中配置类似的内容,请查看已移植到各种语言的Lucene ,包括 PHP(在 Zend 框架中)

或者,如果您比文本搜索更需要“标记”,那么其他东西可能更合适。

于 2009-05-14T00:25:09.787 回答