это мои настройки индекса 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, но до сих пор не могу заставить это работать.
aust
, потому что ваши ngrams состоят только из 3 букв:"min_gram": "3", "max_gram": "3"
иaust
состоят из 4 букв. Если вы хотите, чтобыaust
или что-то большее соответствовало этому, используйтеmax_gram: 10
или что-то большее. - person Andrei Stefan   schedule 30.04.2017