停用词词元过滤器

停用词词元过滤器 #

停用词(stop)词元过滤器用于在分词过程中从词元流中去除常见词汇(也称为停用词)。停用词通常是冠词和介词,比如“a” 或 “for” 。这些词在搜索查询中意义不大,并且常常被排除在外,以提高搜索效率和相关性。

默认的英语停用词列表包含以下单词: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。

参数说明 #

停用词词元过滤器可以使用以下参数进行配置:

参数必需/可选数据类型描述
stopwords可选字符串既可以指定自定义的停用词数组,也可以指定一种语言以获取预定义的 Lucene 停用词列表。可指定的语言如下:
- _arabic_
- _armenian_
- _basque_
- _bengali_
- _brazilian_(巴西葡萄牙语)
- _bulgarian_
- _catalan_
- _cjk_(中文、日语和韩语)
- _czech_
- _danish_
- _dutch_
- _english_(默认值)
- _estonian_
- _finnish_
- _french_
- _galician_
- _german_
- _greek_
- _hindi_
- _hungarian_
- _indonesian_
- _irish_
- _italian_
- _latvian_
- _lithuanian_
- _norwegian_
- _persian_
- _portuguese_
- _romanian_
- _russian_
- _sorani_
- _spanish_
- _swedish_
- _thai_
- _turkish_
stopwords_path可选字符串指定包含自定义停用词的文件的路径(可以是绝对路径,也可以是相对于配置目录的相对路径)。
ignore_case可选布尔值如果设置为 true,则在匹配停用词时不区分大小写。默认值为 false
remove_trailing可选布尔值如果设置为 true,则在分析过程中会移除末尾的停用词。默认值为 true

参考样例 #

以下示例请求创建了一个名为 my-stopword-index 的新索引,并配置了一个带有停用词过滤器的分词器,该过滤器使用预定义的英语停用词列表。

PUT /my-stopword-index
{
  "settings": {
    "analysis": {
      "filter": {
        "my_stop_filter": {
          "type": "stop",
          "stopwords": "_english_"
        }
      },
      "analyzer": {
        "my_stop_analyzer": {
          "type": "custom",
          "tokenizer": "standard",
          "filter": [
            "lowercase",
            "my_stop_filter"
          ]
        }
      }
    }
  }
}

产生的词元 #

使用以下请求来检查使用该分词器生成的词元:

GET /my-stopword-index/_analyze
{
  "analyzer": "my_stop_analyzer",
  "text": "A quick dog jumps over the turtle"
}

返回内容包含产生的词元

{
  "tokens": [
    {
      "token": "quick",
      "start_offset": 2,
      "end_offset": 7,
      "type": "<ALPHANUM>",
      "position": 1
    },
    {
      "token": "dog",
      "start_offset": 8,
      "end_offset": 11,
      "type": "<ALPHANUM>",
      "position": 2
    },
    {
      "token": "jumps",
      "start_offset": 12,
      "end_offset": 17,
      "type": "<ALPHANUM>",
      "position": 3
    },
    {
      "token": "over",
      "start_offset": 18,
      "end_offset": 22,
      "type": "<ALPHANUM>",
      "position": 4
    },
    {
      "token": "turtle",
      "start_offset": 27,
      "end_offset": 33,
      "type": "<ALPHANUM>",
      "position": 6
    }
  ]
}