gpt4 book ai didi

mysql - 忽略查询中的mysql全文停用词

转载 作者:IT王子 更新时间:2023-10-29 00:33:16 27 4
gpt4 key购买 nike

我正在构建一个网站搜索,它使用全文搜索。搜索本身效果很好,这不是我的问题。我将用户提供的关键字(MATCH ... AGAINST ...)与 AND 串在一起,以便多个词进一步缩小结果范围。现在,我知道某些停用词没有编入索引,这对我来说很好,我真的不想将它们用作选择标准。但是,如果在关键字集中(由用户)提供了停用词,它会杀死所有结果(如预期的那样),即使该词实际上位于某个文本 block 中。

我的问题:有什么方法可以检查某个词在查询时是否是停用词?我首选的解决方案是从搜索条件中排除相关词(我不在乎用户是否可以通过“两者”一词来缩小结果范围,我只是不希望 MySQL 返回空结果集,因为用户提供它,即使结果中都不存在)。或者,我只需要清空停用词列表吗?非常感谢您的帮助。

编辑----抱歉,确实没有为此提供的代码片段。代码工作正常,实际上完全符合预期。我正在处理的更像是一个逻辑问题。但作为一个例子,以解释的方式:

假设有3条记录,其中包括单词(但不限于)

1:苹果、橙子、芒果、香蕉2:葡萄、橙子、菠萝、芒果3:土 bean 、芒果、甜瓜、keira knightly

如果用户输入的搜索词是mango,则所有结果都正确返回。如果单词是 orange AND mango,则返回结果 1 和 2(正确)。现在,假设 banana 是停用词(它不是……但我们假设它是),如果搜索的是 orange、mango 和 banana,则不会返回任何结果(因为 banana 不在全文索引中)。

我正在寻找的是是否有其他人遇到过这个问题,并且有办法解决它。有点像:

if 'banana' NOT STOP WORD match 'banana' against `words`. (OBVIOUSLY not real code).

或者...我是否只需要删除停用词列表...

最佳答案

您可以通过比较所有停用词来验证关键字。这里是 stopwords 的列表我找到了一种从全文中禁用停用词的解决方案。你只需要找到 .cnf 文件并添加这个,

ft_stopword_file = ""

重启mysql引擎并重建索引;

希望这项工作

关于mysql - 忽略查询中的mysql全文停用词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12678920/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com