停用词的优缺点

现在我们拥有更大的磁盘空间,更多内存,并且 还有更好的压缩算法。 将之前的 33 个常见词从索引中移除,每百万文档只能节省 4MB 空间。 所以使用停用词减少索引大小不再是一个有效的理由。 (不过这种说法还有一点需要注意,我们在 停用词与短语查询 讨论。)

在此基础上,从索引里将这些词移除会使我们降低某种类型的搜索能力。将前面这些所列单词移除会让我们难以完成以下事情:

  • 区分 happy 和 _not happy_。
  • 搜索乐队名称 The The。
  • 查找莎士比亚的名句 “To be, or not to be” (生存还是毁灭)。
  • 使用挪威的国家代码: `no`。

移除停用词的最主要好处是性能,假设我们在个具有上百万文档的索引中搜索单词 fox`。或许 `fox 只在其中 20 个文档中出现,也就是说 Elasticsearch 需要计算 20 个文档的相关度评分 `_score `从而排出前十。现在我们把搜索条件改为 `the OR fox`,几乎所有的文件都包含 `the 这个词,也就是说 Elasticsearch 需要为所有一百万文档计算评分 `_score`。 由此可见第二个查询肯定没有第一个的结果好。

幸运的是,我们可以用来保持常用词搜索,同时还可以保持良好的性能。首先我们一块学习如何使用停用词。