ElasticSearch Analysis分析器

Analysis

分词器是转换文本的过程,就像邮件的正文一样。转变成词或者短语,并且添加到倒排索引中去。分析由分析器执行,可以是一个内置的分析器去做,也可以由每个索引自定义去分析器去做。

Index time analysis

"The QUICK brown foxes jumped over the lazy dog!"

以上述字句为例,在索引时间内置英文分析仪将首先转换这个句子:变成不同的单词,随后将这些单词变成小写的,去除经常出去的停用词,如(“the”)这种并且还原词干,例如foxes->fox,jumped->jump,lazy->lazi。在最后,这些词干将会被加入到倒排索引中去。

[ quick, brown, fox, jump, over, lazi, dog ]

Specifying an index time analyzer

在每个mapping下面定义文本字段时,可以指定这个字段自己的分析器。

PUT my_index
{
  "mappings": {
    "properties": {
      "title": {
        "type":     "text",
        "analyzer": "standard"
      }
    }
  }
}

在创建索引时,如果没有分析器被定义,字段将在索引setting部分寻找一个默认的分析器。根据它,将默认用标准分析器

Search time analysis(搜索时间分析器)

同样的分析器被应用于全文搜索的时候匹配字符串。类似于match匹配查询去将文本字符串变成词条,与那些在倒排索引当中存在的内容保持相同的形式。

举个例子:

"a quick fox"

当用英文分析器进行分词时,会将其分析成为以下形式:

[ quick, fox ]

尽管,在查询字符串的操作时,上述的原文单词并不会出现在原文中,例如(quick vs QUICK, fox vs foxes),因为我们已经用了同样的分析器,将文本与字符串查询都进行了同样的分析。这些字符串查询的单词事实上已经被添加到了倒排索引中去。这意味着,这个查询将会与我们样例的文档会进行匹配。并且会成功。

Specifying a search time analyzer

通常,同样的分析器会被用在建立索引时和搜索时。并且全文检索,像match 查询将将会使用索引去寻找每一个被分析过的字段。

分析器会去搜索一个特定字段,去进行搜索。特定的字段

  • 一个在查询当中被提到的分析器
  • 所述search_analyzer映射参数。
  • 该分析器索引的参数
  • 在索引定义时,被称作默认检索的分析器
  • 在索引定义时被称作默认的分析器
  • 标准分析其

你可能感兴趣的:(Elasticsearch)