【问题标题】:How to make MySQL treat underscore as a word separator for fulltext search?如何使 MySQL 将下划线视为全文搜索的单词分隔符?
【发布时间】:2011-01-16 03:05:50
【问题描述】:

我正在使用 MySQL 全文和 PHP (codeigniter) 来搜索包含 RSS 项目的数据库。问题是其中一些项目的标题使用下划线而不是空格。由于 MySQL 将下划线视为单词的一部分,因此这些项目将永远不会在搜索中匹配,除非用户键入包括下划线在内的确切标题。

服务器是共享的,所以我无权访问 MySQL 服务器系统变量。

可以通过其他方式更改此行为吗? 这可以通过搜索查询本身来完成吗?

我知道我可以用空格替换数据库中出现的所有下划线,但这会损害这些标题的原始完整性。只是想知道是否有其他方法可以做到这一点。

【问题讨论】:

    标签: php mysql codeigniter full-text-search separator


    【解决方案1】:

    我知道我可以用空格替换数据库中出现的所有下划线,但这会损害这些标题的原始完整性。只是想知道是否有其他方法可以做到这一点。

    您可以使用专门用于全文搜索的单独字段,而不是替换原始标题字段中的下划线。

    这允许您替换下划线,并将关键字聚合到此字段(类别名称、作者、标签等)以增强搜索结果的相关性。 我们多次使用它成功地摆脱了搜索推断内容中的 HTML 标记

    【讨论】:

    • 这听起来是个不错的选择。将努力实施该方法。谢谢大家。
    【解决方案2】:

    我认为如果不访问服务器就无法做到这一点。我见过的唯一方法是对this mySQL manual page 的第一条评论(“我如何将'-'添加到单词字符列表中”)。它需要停止服务器并更改内部配置。

    您最好的选择可能是创建一个删除下划线的第二列,然后进行搜索。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-15
      • 2010-12-05
      • 1970-01-01
      • 2012-06-30
      • 2014-11-21
      • 1970-01-01
      • 2011-11-26
      • 2021-04-22
      相关资源
      最近更新 更多