代码之家  ›  专栏  ›  技术社区  ›  ejunker

处理mysql全文特殊字符

  •  6
  • ejunker  · 技术社区  · 17 年前

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

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

    2 回复  |  直到 17 年前
        1
  •  5
  •   Gary Pendergast    17 年前

    在使用mysql的全文搜索时无法很好地做到这一点。你所做的(用预先定义的字符串替换特殊字符)是唯一的方法。

    您可以考虑使用 Sphinx Search 相反。它显然支持转义特殊字符,而且所有的报告都比默认的全文搜索快得多。

        2
  •  4
  •   thomasrutter    17 年前

    mysql在构建全文索引时忽略了哪些标记,这相当残酷。我会说,在遇到“C++”这个词的时候,它可能会删去加号,只留下C,然后忽略它,因为它太短了。您可能可以将mysql配置为包含单字母单词,但它并没有对此进行优化,而且我怀疑您是否可以让它按您所希望的方式处理加号字符。

    如果你需要一个好的内部搜索引擎,你可以在这里配置这样的东西。 Lucene 已经被移植到各种语言中 including PHP (in the Zend framework) .

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