【问题标题】:Analyzers in elasticsearchelasticsearch 中的分析器
【发布时间】:2012-10-01 22:41:22
【问题描述】:

我在使用轮胎宝石的弹性搜索中理解分析器的概念时遇到了麻烦。我实际上是这些搜索概念的新手。这里有人可以帮助我提供一些参考文章或解释分析器的实际作用以及使用它们的原因吗?

我看到在 elasticsearch 中提到了不同的分析器,例如关键字、标准、简单、滚雪球。如果没有分析仪的知识,我无法确定真正适合我的需求。

【问题讨论】:

标签: elasticsearch analyzer tire


【解决方案1】:

让我给你一个简短的答案。

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

要索引一个短语,将其分解为单词可能会很有用。 分析仪来了。

它应用标记器和标记过滤器。 分词器可以是空白分词器。它在每个空格处将一个短语拆分为标记。 小写分词器将在每个非字母处拆分一个短语,并将所有字母小写。

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

分析器是所有这些的混合体。

您应该阅读Analysis guide 并查看您拥有的所有不同选项。

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

您也可以使用Analyze Api 了解它的工作原理。很有用。

【讨论】:

  • 您可以使用this plugin 来更好地了解分析器、标记器、过滤器。
  • 它似乎不适用于 edgeNGram 分词器和过滤器
【解决方案2】:

Lucene中,分析器是分词器(拆分器)+词干分析器+停用词过滤器的组合

ElasticSearch中,分析器是一个组合

  1. Character filter:在标记化之前“整理”一个字符串,例如移除 HTML 标签
  2. Tokenizer:它用于将字符串分解为单独的术语或标记。必须只有 1 个。
  3. Token filter:更改、添加或删除令牌。 Stemmer 是令牌过滤器的一个示例。它用于获取单词的基础,例如happyhappiness 都具有相同的基数是 happi

Snowball demo here

这是一个示例设置:

     {
      "settings":{
        "index" : {
            "analysis" : {
                "analyzer" : {
                    "analyzerWithSnowball" : {
                        "tokenizer" : "standard",
                        "filter" : ["standard", "lowercase", "englishSnowball"]
                    }
                },
                "filter" : {
                    "englishSnowball" : {
                        "type" : "snowball",
                        "language" : "english"
                    }
                }
            }
        }
      }
    }

参考:

  1. Comparison of Lucene Analyzers
  2. http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/custom-analyzers.html

【讨论】:

    【解决方案3】:

    这是github repo 上的一个很棒的插件。它是Analyze API 的某种扩展。在官方弹性插件list上找到。

    很棒的是,它会在每一步之后显示标记及其所有属性。有了这个,就可以轻松调试分析器配置,并了解为什么我们会得到这样的令牌以及我们在哪里丢失了我们想要的令牌。

    希望我早于今天找到它。多亏了这一点,我才发现为什么我的 keyword_repeat 令牌标记器似乎无法正常工作。问题是由下一个标记过滤器引起的:icu_transform(用于音译)不幸的是它不尊重关键字属性并转换了所有标记。如果不是这个插件,我不知道我还能如何找到原因。

    【讨论】:

      猜你喜欢
      • 2011-07-19
      • 2014-02-15
      • 2018-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      • 2014-02-25
      相关资源
      最近更新 更多