ElasticSearch edge-ngram и шаблонный фильтр

У меня есть заголовок, такой как SimpleDoc000155/1 (количество символов не фиксировано, но за ним всегда следуют 9 цифр и / и номеров), я хотел бы знать, как я могу проанализировать эти поля, чтобы получить результаты: 155 и SimpleDoc000155.

Elasticsearch версии 2.2

Моя текущая настройка:

"analysis": {
            "analyzer": {
                "my_analyzer": {
                    "tokenizer": "autocomplete",
          "filter" : [ "code", "lowercase" ]
                }
            },
            "filter": {
                "code": {
                    "type": "pattern_capture",
          "preserve_original" : 1,
                    "patterns": ["([1-9].+(?=\/))"]
                }
            },
      "tokenizer" : {
      "autocomplete": {
          "type": "edge_ngram",
          "min_gram": 6,
          "max_gram": 32,
          "token_chars": [
            "letter",
            "digit"
          ]
        }
      }
        }
    }

Результаты, которые я получаю

{
    "tokens": [{
            "token": "simple",
            "start_offset": 0,
            "end_offset": 6,
            "type": "word",
            "position": 0
        },
        {
            "token": "simpled",
            "start_offset": 0,
            "end_offset": 7,
            "type": "word",
            "position": 1
        },
        {
            "token": "simpledo",
            "start_offset": 0,
            "end_offset": 8,
            "type": "word",
            "position": 2
        },
        {
            "token": "simpledoc",
            "start_offset": 0,
            "end_offset": 9,
            "type": "word",
            "position": 3
        },
        {
            "token": "simpledoc0",
            "start_offset": 0,
            "end_offset": 10,
            "type": "word",
            "position": 4
        },
        {
            "token": "simpledoc00",
            "start_offset": 0,
            "end_offset": 11,
            "type": "word",
            "position": 5
        },
        {
            "token": "simpledoc000",
            "start_offset": 0,
            "end_offset": 12,
            "type": "word",
            "position": 6
        },
        {
            "token": "simpledoc0001",
            "start_offset": 0,
            "end_offset": 13,
            "type": "word",
            "position": 7
        },
        {
            "token": "simpledoc00015",
            "start_offset": 0,
            "end_offset": 14,
            "type": "word",
            "position": 8
        },
        {
            "token": "simpledoc000155",
            "start_offset": 0,
            "end_offset": 15,
            "type": "word",
            "position": 9
        }
    ]
}

И я немного растерялся. Много пробовал, но я не могу вернуть 155, похоже, что pattern_capture работает неправильно.

Спасибо за ответ!

Обновить:

Изменил токенизатор с Edgengram на ngram, вроде работает, но есть много ненужных токенов.

0 ответов

Другие вопросы по тегам