ElasticSearch 5 для настроек поиска контента и запроса с помощью ngram

это мои настройки индекса ES5:

dev: {
  settings: {
    index: {
      number_of_shards: "5",
      provided_name: "dev",
      creation_date: "1491735064046",
      analysis: {
        filter: {
          trigrams_filter: {
            type: "ngram",
            min_gram: "3",
            max_gram: "3"
            }
         },
        analyzer: {
          trigrams: {
            filter: [
              "lowercase",
              "trigrams_filter"
            ],
            type: "custom",
            tokenizer: "standard"
           }
         }
       },
     number_of_replicas: "1",
     uuid: "2dcgz81ET0GRFa-EEwsUhA",
     version: {
       created: "5020299"
     }
   }
 }

},

этот запрос даст 1 результат, как и ожидалось:

{'from': 0,
 'query': {'bool': {'filter': [{'term': {'public': True}}],
                    'must': [{'multi_match': {'fields': ['author_name',
                                                         'title^5',
                                                         'title_ngram',
                                                         'title.ngram',
                                                         'title.stemmed',
                                                         'text^3',
                                                         'text.stemmed',
                                                         'keywords',
                                                         'keywords.stemmed',
                                                         'categories',
                                                                 'categories.stemmed'],
                                              'fuzziness': 'AUTO',
                                              'query': u'austrailia'}}]}},
 'size': 20}

потому что есть статья с заголовком australia.

однако этот запрос для aust не даст никакого результата:

{'from': 0,
 'query': {'bool': {'filter': [{'term': {'public': True}}],
                    'must': [{'multi_match': {'fields': ['author_name',
                                                         'title^5',
                                                         'title_ngram',
                                                         'title.ngram',
                                                         'title.stemmed',
                                                         'text^3',
                                                         'text.stemmed',
                                                         'keywords',
                                                         'keywords.stemmed',
                                                         'categories',
                                                             'categories.stemmed'],
                                              'fuzziness': 'AUTO',
                                              'query': u'austrailia'}}]}},
 'size': 20}

Я прочитал всю документацию по ES5, но до сих пор не могу заставить это работать.


person uri.lazar    schedule 30.04.2017    source источник
comment
Можете ли вы также предоставить сопоставление для всех этих полей в ваших запросах и некоторых образцах документов?   -  person Andrei Stefan    schedule 30.04.2017
comment
Вы ничего не получите за aust, потому что ваши ngrams состоят только из 3 букв: "min_gram": "3", "max_gram": "3" и aust состоят из 4 букв. Если вы хотите, чтобы aust или что-то большее соответствовало этому, используйте max_gram: 10 или что-то большее.   -  person Andrei Stefan    schedule 30.04.2017


Ответы (1)


Вы ничего не получите за aust, потому что ваши ngrams состоят только из 3 букв: "min_gram": "3", "max_gram": "3" и aust состоят из 4 букв. Если вы хотите, чтобы aust или что-то большее соответствовало этому, используйте max_gram: 10 или что-то большее.

person Andrei Stefan    schedule 30.04.2017
comment
я изменил max_grams: 10 все еще нет результатов - person uri.lazar; 04.05.2017
comment
Затем поделитесь полным сопоставлением (включая сопоставление для поля title), полным запросом и документом, который, по вашему мнению, должен соответствовать вашему запросу. - person Andrei Stefan; 04.05.2017