3

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

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

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

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

4

2 回答 2

1

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

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

于 2010-02-12T11:56:44.360 回答
1

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

您可以使用专用于全文搜索的单独字段来代替原始标题字段中的下划线。

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

于 2010-02-12T12:22:29.020 回答