我正在使用MySQL全文和PHP(codeigniter)来搜索包含RSS项目的数据库。问题是这些项目中的一些标题使用下划线而不是空格。由于MySQL将下划线视为单词的一部分,因此除非用户键入包含下划线的确切标题,否则这些项将永远不会在搜索中匹配。
服务器是共享的,因此我无法访问MySQL服务器系统变量。
可以通过其他方式更改此行为吗? 这可以通过搜索查询本身来完成吗?
我知道我可以用空格替换DB中的所有下划线出现,但这会损害这些标题的原始完整性。只是想知道是否还有另一种方法。
答案 0 :(得分:1)
我认为如果没有访问服务器就无法做到这一点。我见过的唯一方法是this mySQL manual page上的第一条评论(“我如何添加' - '到单词字符列表中”)。它需要停止服务器并更改内部配置。
您最好的选择可能是创建第二列,删除下划线,然后搜索。
答案 1 :(得分:1)
我知道我可以用空格替换DB中的所有下划线出现,但这会损害这些标题的原始完整性。只是想知道是否还有另一种方法。
您可以使用专门用于全文搜索的单独字段,而不是替换原始标题字段中的下划线。
这允许您将下划线和聚合关键字替换为此字段(类别名称,作者,标签等)以增强搜索结果相关性。 我们成功使用了很多次来摆脱使用搜索推断的内容中的HTML标签