首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >elastic4s:如何在分析中添加用于german_phonebook的分析器/过滤器?

elastic4s:如何在分析中添加用于german_phonebook的分析器/过滤器?
EN

Stack Overflow用户
提问于 2016-02-23 14:39:53
回答 1查看 269关注 0票数 1

如何将以下german_phonebook分析器添加到使用elastic4s的弹性搜索中?

代码语言:javascript
复制
        "index": {
            "analysis": {
                "analyzer": {
                    "german": {
                        "filter": [
                            "lowercase",
                            "german_stop",
                            "german_normalization",
                            "german_stemmer"
                        ],
                        "tokenizer": "standard"
                    },
                    "german_phonebook": {
                        "filter": [
                            "german_phonebook"
                        ],
                        "tokenizer": "keyword"
                    },
                    "mySynonyms": {
                        "filter": [
                            "lowercase",
                            "mySynonymFilter"
                        ],
                        "tokenizer": "standard"
                    }
                },
                "filter": {
                    "german_phonebook": {
                        "country": "CH",
                        "language": "de",
                        "type": "icu_collation",
                        "variant": "@collation=phonebook"
                    },
                    "german_stemmer": {
                        "language": "light_german",
                        "type": "stemmer"
                    },
                    "german_stop": {
                        "stopwords": "_german",
                        "type": "stop"
                    },
                    "mySynonymFilter": {
                        "synonyms": [
                            "swisslift,lift"
                        ],
                        "type": "synonym"
                    }
                }
            },

这里的核心问题是在german_phonebook类型的icu_collation过滤器中使用哪个过滤器。

..。

按照这个答案,我想出了下面的代码:

代码语言:javascript
复制
  case class GPhonebook() extends TokenFilterDefinition {
    val filterType = "phonebook"
    def name = "german_phonebook"
    override def build(source: XContentBuilder): Unit = {
      source.field("tokenizer", "keyword")
      source.field("country", "CH")
      source.field("language", "de")
      source.field("type", "icu_collation")
      source.field("variant", "@collation=phonebook")  
    }
  }

分析器的定义现在如下所示:

代码语言:javascript
复制
  CustomAnalyzerDefinition(
      "german_phonebook",
      KeywordTokenizer("myKeywordTokenizer2"),
      GPhonebook()
  )
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-24 15:26:31

你真正想说的是

CustomTokenFilter("german_phonebook)BuiltInTokenFilter("german_phonebook")但你不能(我再加一句)。

所以现在,您需要扩展TokenFilterDefinition

比方说

代码语言:javascript
复制
case class GPhonebook extends TokenFilterDefinition {
  val filterType = "phonebook"
  override def build(source: XContentBuilder): Unit = {
    // set extra params in here
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35580412

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档