Есть анализатор след содержания:
"analysis" : {
"char_filter": {
"ru" : {
"type": "mapping",
"mappings": ["Ё=>Е", "ё=>е"]
}
},
"filter" : {
"stopwords_ru" : {
"type" : "stop",
"stopwords_path" : "/etc/elasticsearch/stopwords.txt",
"ignore_case" : true
},
"synonyms_ru" : {
"type" : "synonym",
"synonyms_path" : "/etc/elasticsearch/synonyms.txt",
"expand" : false,
"ignore_case" : true
},
"custom_word_delimiter" : {
"type": "word_delimiter",
"generate_word_parts": true,
"generate_number_parts": true,
"catenate_words": false,
"catenate_numbers": false,
"catenate_all": false,
"split_on_case_change": true,
"preserve_original": false,
"split_on_numerics": true
}
},
"analyzer" : {
"index_ru" : {
"type": "custom",
"tokenizer": "standard",
"filter": ["custom_word_delimiter", "lowercase", "synonyms_ru", "russian_morphology", "english_morphology", "stopwords_ru", "stop" ],
char_filter: ["ru"]
}
}
}
Поиск идет по нескольким полям индекса, сортировка по релевантсности. Если искать "космический челнок" то сначала показываются результаты поиска, где есть фраза "космический челнок", т е все ОК. Если искать "11 серия", то в результатах это есть ( даже с подчеркиванием ) но не на 1 месте. Как это исправить ?
Попробуйте поставить search_type
в dfs_query_then_fetch
. Если не поможет, добавьте explain=true
и пришлите сюда результат.