如何为地址编写Elasticsearch Analyzer?

时间:2017-01-12 11:57:23

标签: elasticsearch analyzer elasticsearch-query

我试图编写一个分析器来索引地址字段。 该字段和查询可以包含城市,国家,街道名称/数字,邮政编码的多种组合。应忽略字母大小写和单词顺序。我还需要处理不同的语言。 如果我有一个包含" los angeles" - 目前我通过查询" los"或者"安吉尔斯"。但不是" los angeles"。我不能使用关键字标记化,因为这只会在整个术语中搜索匹配...那么我应该怎么做呢? 编辑 - 这是PREFIX搜索。 EDIT2 - 当我使用标准的标记器时 - 搜索适用于" los"," los angeles"," angeles"," angeles los" - 但不是" lo"例如......我也需要前缀搜索。如果我使用" match_phrase_prefix"而不是"前缀"查询 - 我得到了" los ange"上班。但是必须保留单词顺序......并且添加数字并不能找到匹配项。 例如,如果该字段包含" los angeles 32" - " los 32"不回来......

感谢。

analysis: {
  analyzer: {
    phone_analyzer: {
      type: "custom",
      tokenizer: "keyword",
      filter: [
        "word_delimiter_for_phone"
      ]
    }
    address_analyzer: {
      type: "custom",
      tokenizer: "standard",
      filter: ["trim", "lowercase",'asciifolding']
    }
  },
  filter: {
    word_delimiter_for_phone: {
      type: "word_delimiter",
      catenate_numbers: true,
      preserve_original: true 
    }
  }

0 个答案:

没有答案