页面树结构

2017-11-09 ApacheCN 开源组织,第二期邀请成员活动,一起走的更远 : http://www.apachecn.org/member/209.html


MachineLearning 优酷地址 : http://i.youku.com/apachecn

转至元数据结尾
转至元数据起始

原文链接 : https://www.elastic.co/guide/en/elasticsearch/reference/5.3/analysis-custom-analyzer.html(修改该链接为官网对应的链接)

译文链接 : http://www.apache.wiki/display/Elasticsearch/analysis-custom-analyzer.html(修改该链接为 ApacheCN 对应的译文链接)

贡献者 : ╮欠n1的太多ApacheCNApache中文网

当内置分析器不能满足您的需求时,您可以创建一个custom分析器,它使用以下相应的组合:

配置

custom(自定义)分析器接受以下的参数:

 

tokenizer

内置或定制的标记器。 (需要)

char_filter

内置或自定义字符过滤器的可选阵列。

filter

可选的内置或定制token过滤器阵列。

position_increment_gap

在索引文本值数组时,Elasticsearch会在一个值的最后一个值和下一个值的第一个项之间插入假的“间隙”,以确保短语查询与不同数组元素的两个术语不匹配。 默认为100.有关更多信息,请参阅position_increment_gap


配置示例

以下是一个结合以下内容的示例:

字符过滤器

分词器

Token 分析器

PUT my_index
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_custom_analyzer": {
          "type":      "custom",
          "tokenizer": "standard",
          "char_filter": [
            "html_strip"
          ],
          "filter": [
            "lowercase",
            "asciifolding"
          ]
        }
      }
    }
  }
}

POST my_index/_analyze
{
  "analyzer": "my_custom_analyzer",
  "text": "Is this <b>déjà vu</b>?"
}

上述句子将产生以下词语:

 

 

[ is, this, deja, vu ]

前面的例子使用了默认配置的tokenizer,令牌过滤器和字符过滤器,但是可以创建每个配置的版本并在自定义分析器中使用它们。
以下是一个比较复杂的例子:

字符过滤器

分词器

Token 分析器

示例

PUT my_index
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_custom_analyzer": {
          "type": "custom",
          "char_filter": [
            "emoticons" 
          ],
          "tokenizer": "punctuation", 
          "filter": [
            "lowercase",
            "english_stop" 
          ]
        }
      },
      "tokenizer": {
        "punctuation": { 
          "type": "pattern",
          "pattern": "[ .,!?]"
        }
      },
      "char_filter": {
        "emoticons": { 
          "type": "mapping",
          "mappings": [
            ":) => _happy_",
            ":( => _sad_"
          ]
        }
      },
      "filter": {
        "english_stop": { 
          "type": "stop",
          "stopwords": "_english_"
        }
      }
    }
  }
}

POST my_index/_analyze
{
  "analyzer": "my_custom_analyzer",
  "text":     "I'm a :) person, and you?"
}

 

表情符号字符过滤器,标点符号化器和english_stop令牌过滤器是在相同索引设置中定义的自定义实现。

以上示例产生以下词语:
[ i'm, _happy_, person, you ]

 

 

  • 无标签