【问题标题】:Completion Suggester Foreign Language Accents Greek完成建议者外语口音希腊语
【发布时间】:2019-12-17 22:47:08
【问题描述】:

我正在尝试使用希腊语的完成建议。不幸的是,我对ά 之类的口音有疑问。我尝试了几种方法。

一个是简单地在映射中设置希腊分析器,另一个是带有 asciifolding 的小写分析器。没有成功,使用希腊分析仪我什至没有得到带有口音的结果。

以下是我所做的,如果有人可以在这里帮助我,那就太好了。

映射

PUT t1
{
  "mappings": {
    "profession" : {
      "properties" : {
        "text" : {
            "type" : "keyword"
        },
        "suggest" : {
            "type" : "completion",
            "analyzer": "greek"
        }
      }
    }
  }
}

假人

POST t1/profession/?refresh
{
    "suggest" : {
        "input": [ "Μάγειρας"]
    }
    ,"text": "Μάγειρας"
}

查询

GET t1/profession/_search
{ "suggest": 
  { "profession" : 
      { "prefix" : "Μα"
      , "completion" : 
        { "field" : "suggest"}
      }}}

【问题讨论】:

  • 如果使用带重音的前缀会怎样?
  • @aclokay 当我使用希腊语分析器时,我什么也得不到。使用小写和 asciifolding 我至少会得到带有重音的结果,但不是没有。

标签: elasticsearch autocomplete analyzer


【解决方案1】:

我找到了一种使用自定义分析器或通过 es 插件的方法,当涉及到非拉丁文本时,我强烈推荐。

选项 1

PUT t1
{ "settings": 
    { "analysis": 
      { "filter": 
        { "greek_lowercase": 
          { "type":       "lowercase"
          , "language":   "greek"
          }  
        }
      , "analyzer": 
          { "autocomplete": 
            { "tokenizer": "lowercase"
            , "filter": 
                [ "greek_lowercase" ]
          }
        }
    }}
, "mappings": {
    "profession" : {
      "properties" : {
        "text" : {
            "type" : "keyword"
        },
        "suggest" : {
            "type" : "completion",
            "analyzer": "autocomplete"
        }
      }}}
}

选项 2 ICU 插件

安装 ES 插件: https://www.elastic.co/guide/en/elasticsearch/plugins/current/analysis-icu.html

{ "settings": {
"index": {
    "analysis": {
    "normalizer": {
        "latin": {
        "filter": [
            "custom_latin_transform"
        ]
        }
    },
    "analyzer": {
        "latin": {
        "tokenizer": "keyword",
        "filter": [
            "custom_latin_transform"
        ]
        }
    },
    "filter": {
        "noDelimiter": {"type": "word_delimiter"},
        "custom_latin_transform": {
        "type": "icu_transform",
        "id": "Greek-Latin/UNGEGN; Lower(); NFD; [:Nonspacing Mark:] Remove; NFC"
        }
    }
    }
}
}
, "mappings":
{ "doc" : {
"properties" : {
    "verbose" : {
        "type" : "keyword"
    },
    "name" : {
        "type" : "keyword"
    },
    "slugHash":{
        "type" : "keyword",
        "normalizer": "latin"
    },
    "level": { "type": "keyword" },
    "hirarchy": {
        "type" : "keyword"
        },
    "geopoint": { "type": "geo_point"  },
    "suggest" :
        { "type" : "completion"
        , "analyzer": "latin"
        , "contexts":
        [ { "name": "level"
            , "type": "category"
            , "path": "level"
            }
        ]
        }}

    }

}}

【讨论】:

    猜你喜欢
    • 2020-05-10
    • 2017-03-15
    • 2017-01-02
    • 1970-01-01
    • 2020-11-03
    • 1970-01-01
    • 2017-05-19
    • 1970-01-01
    • 2014-02-23
    相关资源
    最近更新 更多