如何使MySQL将下划线视为全文搜索的单词分隔符?

问题描述 投票:3回答:2

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

服务器是共享的,因此我无法访问MySQL服务器系统变量。

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

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

php mysql codeigniter full-text-search separator
2个回答
1
投票

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

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

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


1
投票

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

您最好的选择可能是创建第二列,删除下划线,并搜索它。

© www.soinside.com 2019 - 2024. All rights reserved.