我正在构建一个使用全文搜索的网站搜索。搜索本身效果很好,那不是我的问题。我将用户提供的关键字(匹配...反对...)与 AND 串在一起,以便多个词进一步缩小结果。现在,我知道某些停用词没有被索引,这对我来说很好,我真的不想将它们用作选择标准。但是,如果(由用户)在关键字集中提供了一个停用词,即使该词实际上在某个文本块中,它也会杀死所有结果(如预期的那样)。
我的问题:有没有办法在查询时检查某个单词是否是停用词?我的首选解决方案只是从搜索条件中排除相关的单词(我不在乎用户是否可以通过单词'neither'来缩小结果,我只是不希望 MySQL 返回一个空的结果集,因为用户提供它,即使结果中都不存在)。或者,我是否只需要清空停用词列表?非常感谢您的帮助。
编辑----我很抱歉,但实际上没有代码片段可以提供给这个。该代码工作正常,实际上完全符合预期。这更像是我正在处理的一个逻辑问题。但作为一个例子,以解释的方式:
假设有三个记录,其中包括单词(但不限于)
1:苹果、橙子、芒果、香蕉 2:葡萄、橙子、菠萝、芒果 3:土豆、芒果、甜瓜、keira knightly
如果用户输入的搜索词是芒果,则所有结果都正确返回。如果单词是橙色 AND 芒果,则返回结果 1 和 2(正确)。现在,假设香蕉是一个停用词(它不是……但我们假设它是),如果搜索的是橙色、芒果和香蕉,则不会返回任何结果(因为香蕉不在全文索引中)。
我正在寻找的是是否有其他人遇到过这个问题,并且有办法解决它。一种:
if 'banana' NOT STOP WORD match 'banana' against `words`. (OBVIOUSLY not real code).
或者......我是否只需要删除停用词列表......