Ich versuche, Elastic Search für das Speichern von Geodaten zu verwenden. Ich möchte jedoch, dass der Relevanzwert eine Kombination aus der Entfernung von einem Punkt und der Relevanz basierend auf Textabgleich-Abfragen ist. Nehmen wir beispielsweise an, dass die Abfrage Yellowstone National Park
lautet, der Ursprung jedoch in Chicago liegt. Portage Park
in Chicago ist eher passend, denn für jede angemessene Entfernung und Verfall, weil Yellowstone National Park
einen Zerfall Wert nahe Null haben wird und nicht in den Ergebnissen überhaupt nicht angezeigt werden. Was ich gerne machen würde, ist einen FLOOR auf dem Decay-Score zu haben, so dass alle Ergebnisse über eine bestimmte Distanz gleich aussehen.Wie können Sie in ElasticSearch einen Boden für die Gaußsche Abklingfunktion festlegen?
Zum Beispiel ist hier der Java-Code ich habe:
queryBuilder = new FunctionScoreQueryBuilder(queryBuilder).add(
ScoreFunctionBuilders.gaussDecayFunction("search_geo_point", point.get(), "10km")
.setDecay(0.75)
.setOffset("5km"));
Was ich möchte, um alle Punkte zu behandeln ist, die größer als 30 km sagen vom Ursprung als identisch und haben die Verfallsfunktion nicht länger den Punktestand über diesen Punkt hinaus reduzieren. Ist das möglich? Das Problem ist, dass die Decay-Funktion die Relevanz ab einer bestimmten Entfernung so stark reduziert, dass selbst wenn die Abfrage genau zu einem Textfeld passt, sie nicht in den Ergebnissen erscheint.