【发布时间】:2011-10-20 23:58:37
【问题描述】:
正如标题所描述的,在全文搜索中实施干扰词以避免这些词被搜索背后的逻辑是什么?我的意思是,如果有人搜索“存在或不存在”怎么办?没有显示结果?如果有人能告诉我背后的逻辑,我将不胜感激,因为我即将禁用ft_stopword_file。
【问题讨论】:
标签: mysql database search full-text-search logic
正如标题所描述的,在全文搜索中实施干扰词以避免这些词被搜索背后的逻辑是什么?我的意思是,如果有人搜索“存在或不存在”怎么办?没有显示结果?如果有人能告诉我背后的逻辑,我将不胜感激,因为我即将禁用ft_stopword_file。
【问题讨论】:
标签: mysql database search full-text-search logic
这些停用词的原因是全文索引不会变得臃肿。它有助于性能和存储。如果您包含所有停用词(或禁用它们),则会在一定程度上降低全文搜索。
【讨论】:
如果您禁用停用词,那么性能会急剧下降。解决此问题的方法是检查您的 php 代码以查看搜索查询中的停用词是否共同,并为这些查询调整“LIKE”搜索,或者简单地使用 sphinx 作为搜索引擎。停用词背后的逻辑是禁用搜索词,如“is,are,be,there,not”等...
【讨论】:
逻辑是这些词是如此常见,以至于它们会创建大型索引节点并降低系统性能,并且对用户毫无用处,因为“to”和“be”这两个词是如此常见且无上下文。
更好的索引方法是使用 ngrams 来查找引用的短语,例如“to be”,但这种索引非常罕见。
【讨论】: