`
m635674608
  • 浏览: 5053179 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

elasticsearch文档-analysis

 
阅读更多
analysis

基本概念
===

全文搜索引擎会用某种算法对要建索引的文档进行分析, 从文档中提取出若干Token(词元), 这些算法称为Tokenizer(分词器), 这些Token会被进一步处理, 比如转成小写等, 这些处理算法被称为Token Filter(词元处理器), 被处理后的结果被称为Term(词), 文档中包含了几个这样的Term被称为Frequency(词频)。 引擎会建立Term和原文档的Inverted Index(倒排索引), 这样就能根据Term很快到找到源文档了。    文本被Tokenizer处理前可能要做一些预处理, 比如去掉里面的HTML标记, 这些处理的算法被称为Character Filter(字符过滤器), 这整个的分析算法被称为Analyzer(分析器)。 

ES内置了很多Analyzer, 还有很多第三方的Analyzer插件, 比如一些处理中文的Analyzer(中文分词)。 

analyzer、 tokenizer、 filter可以在elasticsearch.yml 配置, 下面是配置例子

```
index :
    analysis :
        analyzer :
            standard :
                type : standard
                stopwords : [stop1, stop2]
            myAnalyzer1 :
                type : standard
                stopwords : [stop1, stop2, stop3]
                max_token_length : 500
            # configure a custom analyzer which is
            # exactly like the default standard analyzer
            myAnalyzer2 :
                tokenizer : standard
                filter : [standard, lowercase, stop]
        tokenizer :
            myTokenizer1 :
                type : standard
                max_token_length : 900
            myTokenizer2 :
                type : keyword
                buffer_size : 512
        filter :
            myTokenFilter1 :
                type : stop
                stopwords : [stop1, stop2, stop3, stop4]
            myTokenFilter2 :
                type : length
                min : 0
                max : 2000

```

analyzer
===

ES内置若干analyzer, 另外还可以用内置的character filter, tokenizer, token filter组装一个analyzer(custom analyzer), 比如

```
index :
    analysis :
        analyzer :
            myAnalyzer :
                tokenizer : standard
                filter : [standard, lowercase, stop]
```

如果你要使用第三方的analyzer插件,需要先在配置文件elasticsearch.yml中注册, 下面是配置IkAnalyzer的例子

```
index:
  analysis:
    analyzer:      
      ik:
          alias: [ik_analyzer]
          type: org.elasticsearch.index.analysis.IkAnalyzerProvider

```

当一个analyzer在配置文件中被注册到一个名字(logical name)下后,在mapping定义或者一些API里就可以用这个名字来引用该analyzer了,比如

```
"message": {
    "type": "string",
    "indexAnalyzer": "ik",
    "searchAnalyzer": "ik"
}
```

如果没有指定索引和搜索用的analyzer,ES会用默认的analyzer来处理,也就是名字(logical name)为`default`, `default_index`, `default_search`的analyzer。 
从名字可以看出来,`default`是索引和搜索时用的默认的analyzer,`default_index`是索引时用的默认的analyzer, 
`default_search`是查询时用的默认analyzer。

下面是在elasticsearch.yml中配置默认analyzer的例子

```
index:
  analysis:
    analyzer:
        default_index:
            tokenizer: standard
            filter: [standard, lowercase, my_synonym, my_snow]
        default_search:
            tokenizer: standard
            filter: [standard, lowercase, stop]
```
或者用这种格式

```
index.analysis.analyzer.default.type : "mmseg"

```

一个analyzer可以起若干别名,比如在下面的例子中,standard analyzer可以用alias1或者alias2来引用

```
index :
  analysis :
    analyzer。 :
      standard :
        alias: [alias1, alias2]
        type : standard
        stopwords : [test1, test2, test3]
```

下面是内置的一些analyzer。

| analyzer              | logical name  | description                               |
| ----------------------|:-------------:| :-----------------------------------------|
| standard analyzer     | standard      | standard tokenizer, standard filter, lower case filter, stop filter |
| simple analyzer       | simple        | lower case tokenizer                      |
| stop analyzer         | stop          | lower case tokenizer, stop filter         |
| keyword analyzer      | keyword       | 不分词,内容整体作为一个token(not_analyzed) |
| pattern analyzer      | whitespace    | 正则表达式分词,默认匹配\W+                 |
| language analyzers    | [lang](http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/analysis-lang-analyzer.html)  | 各种语言 |
| snowball analyzer     | snowball      | standard tokenizer, standard filter, lower case filter, stop filter, snowball filter |
| custom analyzer       | custom        | 一个Tokenizer, 零个或多个Token Filter, 零个或多个Char Filter |

tokenizer
===

ES内置的tokenizer列表。

| tokenizer             | logical name  | description                           |
| ----------------------|:-------------:| :-------------------------------------|
| standard tokenizer    | standard      |                                       |
| edge ngram tokenizer  | edgeNGram     |                                       |
| keyword tokenizer     | keyword       | 不分词                                 |
| letter analyzer       | letter        | 按单词分                               |
| lowercase analyzer    | lowercase     | letter tokenizer, lower case filter   |
| ngram analyzers       | nGram         |                                       |
| whitespace analyzer   | whitespace    | 以空格为分隔符拆分                      |
| pattern analyzer      | pattern       | 定义分隔符的正则表达式                  |
| uax email url analyzer| uax_url_email | 不拆分url和email                       |
| path hierarchy analyzer| path_hierarchy| 处理类似`/path/to/somthing`样式的字符串|


token filter
===

ES内置的token filter列表。

| token filter          | logical name  | description                           |
| ----------------------|:-------------:| :-------------------------------------|
| standard filter       | standard      |                                       |
| ascii folding filter  | asciifolding  |                                       |
| length filter         | length        | 去掉太长或者太短的                      |
| lowercase filter      | lowercase     | 转成小写                               |
| ngram filter          | nGram         |                                       |
| edge ngram filter     | edgeNGram     |                                       |
| porter stem filter    | porterStem    | 波特词干算法                            |
| shingle filter        | shingle       | 定义分隔符的正则表达式                  |
| stop filter           | stop          | 移除 stop words                        |
| word delimiter filter | word_delimiter| 将一个单词再拆成子分词                   |
| stemmer token filter  | stemmer       |                                        |
| stemmer override filter| stemmer_override|                                     |
| keyword marker filter | keyword_marker|                                        |
| keyword repeat filter | keyword_repeat|                                        |
| kstem filter          | kstem         |                                        |
| snowball filter       | snowball      |                                        |
| phonetic filter       | phonetic      | [插件](https://github.com/elasticsearch/elasticsearch-analysis-phonetic) |
| synonym filter        | synonyms      | 处理同义词                              |
| compound word filter  | dictionary_decompounder, hyphenation_decompounder | 分解复合词  |
| reverse filter        | reverse       | 反转字符串                              |
| elision filter        | elision       | 去掉缩略语                              |
| truncate filter       | truncate      | 截断字符串                              |
| unique filter         | unique        |                                        |
| pattern capture filter| pattern_capture|                                       |
| pattern replace filte | pattern_replace| 用正则表达式替换                        |
| trim filter           | trim          | 去掉空格                                |
| limit token count filter| limit       | 限制token数量                           |
| hunspell filter       | hunspell      | 拼写检查                                |
| common grams filter   | common_grams  |                                        |
| normalization filter  | arabic_normalization, persian_normalization |          |


character filter
===

ES内置的character filter列表

| character filter          | logical name  | description               |
| --------------------------|:-------------:| :-------------------------|
| mapping char filter       | mapping       | 根据配置的映射关系替换字符   |
| html strip char filter    | html_strip    | 去掉HTML元素               |
| pattern replace char filter| pattern_replace| 用正则表达式处理字符串    |


icu plugin
===

[icu analysis 插件](https://github.com/elasticsearch/elasticsearch-analysis-icu)

http://www.csdn123.com/html/itweb/20131030/195710.htm
分享到:
评论

相关推荐

    最新版 elasticsearch-analysis-ik-8.7.0.zip

    最新版 elasticsearch-analysis-ik-8.7.0.zip最新版 elasticsearch-analysis-ik-8.7.0.zip最新版 elasticsearch-analysis-ik-8.7.0.zip最新版 elasticsearch-analysis-ik-8.7.0.zip

    elasticsearch-analysis-pinyin-7.4.0 es拼音分词器7.4.0

    在Elasticsearch中安装插件,通常通过命令行工具执行,如`bin/elasticsearch-plugin install file:///path/to/elasticsearch-analysis-pinyin-7.4.0.zip`,这将自动处理所有依赖并安装插件。 在配置方面,开发者...

    elasticsearch-analysis-ik-7.16.3.zip

    Elasticsearch的IK分词器为中文全文检索提供了强大的支持,通过"elasticsearch-analysis-ik-7.16.3.zip"插件的安装和配置,我们可以轻松地在Elasticsearch中实现对中文文本的高效分词。无论是日志分析、内容推荐还是...

    elasticsearch-analysis-ik-7.10.0.zip下载

    "elasticsearch-analysis-ik"是针对Elasticsearch的一个中文分词插件,它的主要功能是提供高效、精准的中文分词能力,使得Elasticsearch能够更好地理解和处理中文文本数据。 在Elasticsearch 7.10.0版本中,...

    elasticsearch-analysis-pinyin-7.10.1 elasticsearch-analysis-ik-7

    在给定的标题和描述中,提到了两个重要的插件:"elasticsearch-analysis-pinyin-7.10.1" 和 "elasticsearch-analysis-ik-7.10.1"。 **1. elasticsearch-analysis-pinyin-7.10.1** 这个插件是Elasticsearch针对中文...

    最新版 elasticsearch-analysis-ik-7.6.2.zip

    "elasticsearch-analysis-ik-7.6.2.zip" 是针对Elasticsearch 7.6.2版本的一个专门用于中文分词的插件,其目的是优化对中文文本的索引和查询性能。 IK分析器是Elasticsearch社区中非常流行的一个中文分词插件,由...

    elasticsearch-analysis-ik-7.3.2.zip

    "elasticsearch-analysis-ik"是ES中最受欢迎的中文分词器之一,专为提升中文文本分析性能而设计。本文将深入探讨"elasticsearch-analysis-ik-7.3.2"这个版本,以及与其相关的技术细节。 首先,"elasticsearch-...

    elasticsearch-analysis-ik 7.10.0 分词器

    Elasticsearch-analysis-ik 在各种需要中文搜索的场景中大显身手,如电子商务、社交媒体、新闻资讯、文档检索等。通过精准的分词,它可以提升搜索的精度,帮助用户快速找到目标信息。 **总结** Elasticsearch-...

    elasticsearch-analysis-ik-7.6.1.zip

    Elasticsearch 分析插件是增强其搜索和分析能力的重要工具,其中`elasticsearch-analysis-ik`是一款广泛使用的中文分词插件。标题中的"elasticsearch-analysis-ik-7.6.1.zip"指的是该插件的7.6.1版本,它专为Elastic...

    elasticsearch-analysis-ik-6.8.2.zip

    本文将深入探讨一个名为"elasticsearch-analysis-ik-6.8.2.zip"的插件,它是专为Elasticsearch设计的IK分词器的版本。 IK分词器(Intelligent Chinese Analyzer for Elasticsearch)是Elasticsearch社区中最受欢迎...

    最新版 elasticsearch-analysis-ik-7.8.0.zip

    "elasticsearch-analysis-ik" 是 Elasticsearch 的一个重要插件,专为中文分词处理设计,它旨在提供更强大的中文分析能力。"7.8.0" 版本是这个插件的最新更新,确保与 Elasticsearch 的相应版本兼容并提供了最新的...

    elasticsearch-analysis-ik-8.1.3.zip

    在Elasticsearch中使用IK分词器,首先需要将`elasticsearch-analysis-ik-8.1.3.jar`文件拷贝到Elasticsearch的plugins目录下,然后重启Elasticsearch服务。安装完成后,可以在Elasticsearch的配置文件(如`elastic...

    elasticsearch-analysis-ik-7.4.2.zip

    Elasticsearch 分析插件 IK 是一款为 Elasticsearch 设计的高性能中文分词器,它的全称为 "elasticsearch-analysis-ik"。此版本是 7.4.2,专为 Elasticsearch 7.4.2 版本优化。在中文文档处理中,分词是至关重要的...

    elasticsearch-analysis-ik 7.17.16 分词器

    `elasticsearch-analysis-ik`插件将IK分词器无缝地融入Elasticsearch,使得用户在使用ES时可以直接调用IK的分词能力。安装该插件后,可以在ES的索引设置中配置IK分析器,从而实现对中文文档的高效检索。 **三、...

    elasticsearch-6.8.0+elasticsearch-analysis-ik-6.8.0 .zip

    `elasticsearch-analysis-ik` 是一个专门针对 Elasticsearch 的中文分词插件,6.8.0 版本与 Elasticsearch 6.8.0 完全兼容。IK 分词器提供了丰富的配置选项,可以自定义分词规则,支持热更新词库,能更好地处理中文...

    最新版 elasticsearch-analysis-ik-7.13.4.zip

    这个最新的版本 "elasticsearch-analysis-ik-7.13.4.zip" 提供了针对 Elasticsearch 7.13.4 的优化和增强,旨在提高中文文本处理的效率和准确性。IK 分词器在处理中文词汇时,能够根据上下文信息进行智能切词,从而...

    最新版 elasticsearch-analysis-ik-7.9.0.zip

    这个压缩包 "elasticsearch-analysis-ik-7.9.0.zip" 包含了该插件及其依赖库,使得在处理中文文档时能够进行更精确的全文检索。 首先,我们要理解 Elasticsearch 的核心概念。Elasticsearch 是一个基于 Lucene 的...

    最新版 elasticsearch-analysis-ik-7.14.1.zip

    这个最新版本的压缩包 "elasticsearch-analysis-ik-7.14.1.zip" 包含了必要的组件和配置文件,以确保在 Elasticsearch 7.14.1 版本中能够顺利集成和运行。 首先,让我们了解一下 Elasticsearch。Elasticsearch 是一...

    elasticsearch-analysis-pinyin-7.12.1.zip

    为了更好地支持中文处理,Elasticsearch提供了丰富的插件,其中"elasticsearch-analysis-pinyin-7.12.1"是一款专门用于中文分词的拼音分析器插件,适用于7.12.1版本的Elasticsearch。本文将深入探讨这款插件的功能、...

Global site tag (gtag.js) - Google Analytics