配置内置分析器编辑

内置分析器可以直接使用,无需任何配置。但是,其中一些分析器支持配置选项来更改其行为。例如,standard 分析器可以配置为支持停用词列表。

response = client.indices.create(
  index: 'my-index-000001',
  body: {
    settings: {
      analysis: {
        analyzer: {
          std_english: {
            type: 'standard',
            stopwords: '_english_'
          }
        }
      }
    },
    mappings: {
      properties: {
        my_text: {
          type: 'text',
          analyzer: 'standard',
          fields: {
            english: {
              type: 'text',
              analyzer: 'std_english'
            }
          }
        }
      }
    }
  }
)
puts response

response = client.indices.analyze(
  index: 'my-index-000001',
  body: {
    field: 'my_text',
    text: 'The old brown cow'
  }
)
puts response

response = client.indices.analyze(
  index: 'my-index-000001',
  body: {
    field: 'my_text.english',
    text: 'The old brown cow'
  }
)
puts response
PUT my-index-000001
{
  "settings": {
    "analysis": {
      "analyzer": {
        "std_english": { 
          "type":      "standard",
          "stopwords": "_english_"
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "my_text": {
        "type":     "text",
        "analyzer": "standard", 
        "fields": {
          "english": {
            "type":     "text",
            "analyzer": "std_english" 
          }
        }
      }
    }
  }
}

POST my-index-000001/_analyze
{
  "field": "my_text", 
  "text": "The old brown cow"
}

POST my-index-000001/_analyze
{
  "field": "my_text.english", 
  "text": "The old brown cow"
}

我们将 std_english 分析器定义为基于 standard 分析器,但配置为删除预定义的英语停用词列表。

my_text 字段直接使用 standard 分析器,没有任何配置。不会从此字段中删除任何停用词。结果词项为:[ the, old, brown, cow ]

my_text.english 字段使用 std_english 分析器,因此将删除英语停用词。结果词项为:[ old, brown, cow ]