弹性搜索中的分析器

Vam*_*hna 44 analyzer elasticsearch tire

我无法理解使用轮胎宝石的弹性搜索中的分析器概念.我实际上是这些搜索概念的新手.有人可以在这里帮我一些参考文章或解释分析器实际上做了什么以及为什么使用它们?

我看到弹性搜索中提到了不同的分析器,如关键字,标准,简单,滚雪球.没有分析仪的知识,我无法弄清楚究竟是什么符合我的需要.

dad*_*net 82

我来简单回答一下.

在索引时和搜索时使用分析器.它用于创建术语索引.

要为一个短语编制索引,用文字来区分它可能很有用.这是分析仪.

它应用了tokenizer和token过滤器.tokenizer可以是Whitespace tokenizer.它在每个空间的标记中分割了一个短语.小写标记器将在每个非字母和小写的所有字母上分割短语.

令牌过滤器用于过滤或转换某些令牌.例如,ASCII折叠过滤器会将ê,é,è等字符转换为e.

分析仪是所有这些的混合物.

您应该阅读分析指南并查看您拥有的所有不同选项.

默认情况下,Elasticsearch应用标准分析器.它将删除所有常见的英语单词(以及许多其他过滤器)

您还可以使用Analyze Api来了解它的工作原理.很有用.

  • 您可以使用[此插件](https://github.com/polyfractal/elasticsearch-inquisitor)来更好地理解分析器,标记器,过滤器. (4认同)

Tho*_*Tho 11

在Lucene中,anayzer是tokenizer(splitter)+ stemmer + stopword filter的组合

在ElasticSearch中,分析器是一个组合

  1. 字符过滤器:在字符串标记之前"整理"一个字符串.示例:删除html标记
  2. Tokenizer:必须有一个tokenizer.它用于将字符串分解为单个术语或标记
  3. 令牌过滤器:更改,添加或删除令牌.Stemmer是一个令牌过滤器,它用于获取单词的基础,例如:"happy","happiness"=>"happi"(Snowball demo)

我在我的情况下使用这个分析器:

     {
      "settings":{
        "index" : {
            "analysis" : {
                "analyzer" : {
                    "analyzerWithSnowball" : {
                        "tokenizer" : "standard",
                        "filter" : ["standard", "lowercase", "englishSnowball"]
                    }
                },
                "filter" : {
                    "englishSnowball" : {
                        "type" : "snowball",
                        "language" : "english"
                    }
                }
            }
        }
      }
    }
Run Code Online (Sandbox Code Playgroud)

参考:

  1. Lucene分析仪的比较
  2. http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/custom-analyzers.html