geolocation - ElasticSearch: usa la distancia del punto para afectar la relevancia de la consulta
distance (2)
Puede usar la función de distance
en la secuencia de comandos de la consulta de puntuación personalizada para modificar _score
función de la distancia desde un punto central.
Intenta usar ElasticSearch para crear una búsqueda que usa la distancia desde un punto central para influir en la relevancia.
No quiero simplemente ordenar la distancia desde un punto, que sé que es posible, porque quiero que la relevancia basada en la consulta buscada también afecte los resultados.
Me gustaría pasar una cadena de búsqueda, decir "café", y una latitud / longitud, decir "38, -77", y obtener mis resultados ordenados por una combinación de qué tan relacionados están con el "café" y qué tan cerca están a "38, -77".
¡Gracias!
El tipo de consulta function_score recientemente agregado (0.90.4) agrega soporte para el ranking basado en la distancia. Esta es una alternativa al tipo de consulta de puntuación personalizada.
Un ejemplo levantado de allí:
"query": {
"function_score": {
"functions": [
{ "gauss": { "loc": { "origin": "51,0", "scale": "5km" }}},
]
}
}
Esto aplica una función de disminución (hay varias) a un campo ("loc") que puntúa contra la distancia de un origen dada una escala particular. Esto es exactamente lo que desearía para la clasificación por distancia, ya que le da mucha flexibilidad sobre cómo debería clasificarse sin escribir scripts personalizados.