Полезной особенностью функции more_like_this является то, что ES - это возможность перекрестного поиска различных индексов, при условии, что имена полей и отображения соответствуют.
Одна вещь, которая меня смущает, - это то, как параметры выбора термина применяются в этих ситуациях.
Рассмотрим:
max_doc_freq
Максимальная частота документа, выше которой термины будут игнорироваться во входном документе. Это может быть полезно для игнорирования очень часто встречающихся слов, таких как стоп-слова. По умолчанию он не ограничен (Integer.MAX_VALUE, то есть 2 ^ 31-1 или 2147483647).
Это частота документа в индексе исходного документа? Или он будет применен к индексу, который мы запрашиваем?
Пример:
GET index_a/_search
{
"query": {
"function_score": {
"query": {
"bool": {
"should": [
{
"more_like_this": {
"boost": 1,
"fields": [
"text"
],
"include": true,
"like": [
{
"_id": "tI2N_24BFVRF37fDxSTT",
"_index": "index_b"
}
],
"max_doc_freq": 50000,
"max_query_terms": 50,
"min_term_freq": 1,
"min_word_length": 4,
"minimum_should_match": "1%",
"stop_words": []
}
}
]
}
},
"script_score": {
"script": "1.0"
}
}
}
}
max do c freq в этом случае установлен на 50 000. Но это на index_a? или index_b?