Ответ 1
Вы можете использовать distance
функцию в script Пользовательский запрос оценки, чтобы изменить _score
на основе расстояния от центра.
Попытка использовать ElasticSearch для создания поиска, который использует расстояние от центра, чтобы влиять на релевантность.
Я не хочу просто сортировать на расстоянии от точки, которая, как я знаю, возможна, потому что я хочу, чтобы релевантность на основе поискового запроса также влияла на результаты.
Я хотел бы перейти в строку поиска, сказать "кофе" и "лат/лон", скажем "38, -77", и получить мои результаты, заказанные комбинацией того, как они связаны с "кофе", и насколько они близки к "38, -77".
Спасибо!
Вы можете использовать distance
функцию в script Пользовательский запрос оценки, чтобы изменить _score
на основе расстояния от центра.
Недавно (0.90.4) добавленный тип запроса функции_score добавляет поддержку ранжирования на основе расстояния. Это альтернатива типу пользовательских запросов.
Пример, поднятый оттуда:
"query": {
"function_score": {
"functions": [
{ "gauss": { "loc": { "origin": "51,0", "scale": "5km" }}},
]
}
}
Это применит функцию распада (ее несколько) к полю ( "loc" ), которое оценивается относительно расстояния от источника, заданного определенным масштабом. Это именно то, что вы хотите для ранжирования, поскольку оно дает вам большую гибкость в отношении того, как он должен оцениваться без написания специальных сценариев.