ElasticSearch--停用词的使用

本文探讨了ElasticSearch中使用停用词的优缺点,指出停用词主要能提高搜索性能,但可能导致精确度下降。文章介绍了如何自定义停用词、使用分治法提高查询效率,以及在处理高频词和短语查询时的策略,强调了在索引设计和控制精度上的权衡。
摘要由CSDN通过智能技术生成

使用停用词的利弊

我们拥有更多硬盘资源,但是比较少的内存资源。从索引中去掉一些停用词平均每百万个文档中也就节省了4MB的资源。所以停用词并不是来节省存储资源的。
并且,我们移除一些停用词会带来一些坏处。比如我们就很难无法做到以下几种事情:

  1. 区分 happy from not happy
  2. 搜索 the band The The
  3. 找到莎士比亚的名言”to be, or not to be”
  4. 用国家的代码,例如 挪威:no

而移除停用词带来的好处主要是性能。用fox这个词来搜索一百万的文档。可能fox这个词仅仅存在于20个文档中,这样ElasticSearch只需要计算20个文档的相关度然后排序再返回top 10. 但是如果我们搜索 the or fox。 单词 the 可能存在于几乎所有的文档,这就意味着ElasticSearch必须计算所有文档的_score(相关度)再排序。这是不可想象的。
我们有办法来解决上述描述的问题。下面来讲一下如何使用停用词。

使用停用词

停用词和标准分析器

我们只需要创建一个配置的分析器,并且把停用词输入进去就可以使用用户自定义的停用词了

PUT /my_index
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_analyzer": { 
          "type": "standard", 
          "stopwords": [ "and", "the" ] 
        }
      }
    }
  }
}

分治法

在访问字符串中,可以把字符串中的词分为两个部分,一个种是重要的词(低频词,在比较少文档出现的词),一种是不重要的词(在文档中经常出现的,例如the、a、to)。我们要的搜索结果尽量多匹配更多的重要的词。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>