停用词的优缺点edit

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

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

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

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

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