原文地址: https://www.elastic.co/guide/cn/elasticsearch/guide/current/stopwords.html, 版权归 www.elastic.co 所有
英文版地址: https://www.elastic.co/guide/en/elasticsearch/guide/current/stopwords.html
英文版地址: https://www.elastic.co/guide/en/elasticsearch/guide/current/stopwords.html
请注意:
本书基于 Elasticsearch 2.x 版本,有些内容可能已经过时。
本书基于 Elasticsearch 2.x 版本,有些内容可能已经过时。
停用词: 性能与精度edit
从早期的信息检索到如今, 我们已习惯于磁盘空间和内存被限制为很小一部分,所以 必须使你的索引尽可能小。 每个字节都意味着巨大的性能提升。 词干提取(Stemming, 见将单词还原为词根 )的重要性不仅是因为它让搜索的内容更广泛、让检索的能力更深入,还因为它是压缩索引空间的工具。
一种最简单的减少索引大小的方法就是 索引更少的词。 有些词要比其他词更重要,只索引那些更重要的词来可以大大减少索引的空间。
那么哪些词条可以被过滤呢? 我们可以简单分为两组:
- 低频词(Low-frequency terms)
- 在文档集合中相对出现较少的词,因为它们稀少,所以它们的权重值更高。
- 高频词(High-frequency terms)
-
在索引下的文档集合中出现较多的常用词,例如
the
、and
、和is
。 这些词的权重小,对相关度评分影响不大。
当然,频率实际上是个可以衡量的标尺而不是非 高 即 低 的标签。我们可以在标尺的任何位置选取一个标准,低于这个标准的属于低频词,高于它的属于高频词。
词项到底是低频或是高频取决于它们所处的文档。单词 and
如果在所有都是中文的文档里可能是个低频词。在关于数据库的文档集合里,单词 database
可能是一个高频词项,它对搜索这个特定集合毫无帮助。
每种语言都存在一些非常常见的单词,它们对搜索没有太大价值。在 Elasticsearch 中,英语默认的停用词为:
a, an, and, are, as, at, be, but, by, for, if, in, into, is, it, no, not, of, on, or, such, that, the, their, then, there, these, they, this, to, was, will, with
这些 停用词 通常在索引前就可以被过滤掉,同时对检索的负面影响不大。但是这样做真的是一个好的解决方案吗?