/ / Neo4j Räumliche Ordnung nach Entfernung - neo4j, Ordnung, räumlich

Neo4j Räumliche Ordnung nach Entfernung - neo4j, Ordnung, räumlich

Ich verwende derzeit Spatial für meine Abfragen wie folgt:

START b=node:LocationIndex("withinDistance:[70.67,12.998,6.0]")
RETURN b
ORDER BY b.score

B ist eine Entität, die eine Punktzahl hat und ich möchteOrdnung nach dieser Punktzahl, aber ich fand einen Fall, in dem alle Entitäten mit der Punktzahl 0 nicht nach Entfernung geordnet waren. Ich weiß, dass Spatial automatisch nach Entfernung sortiert, aber sobald ich die Bestellung durch ein anderes Feld erzwinge, verliere ich diese Reihenfolge.

Gibt es eine Möglichkeit, diese Reihenfolge als ein Feld zweiter Ordnung zu erzwingen, wie:

START b=node:LocationIndex("withinDistance:[70.67,12.998,6.0]")
RETURN b
ORDER BY b.score, ?distance?

Antworten:

2 für die Antwort № 1

Leider gibt es im aktuellen Spatial-Plugin überhaupt keine Unterstützung für die Chiffre, so dass auf die Entfernungsfunktion (oder das Entfernungsresultat) von ORDER BY nicht zugegriffen werden kann.

Wie Sie bereits bemerkt haben, ist der AbstandFunktion im Index selbst gibt Ergebnisse nach Entfernung sortiert zurück. Wenn Sie in der Abfrage für die Abfrage keine zusätzliche ORDER BY hinzufügen, sollte die Entfernungsreihenfolge beibehalten werden. Wenn Sie jedoch die zusätzliche ORDER BY hinzufügen, geht die ursprüngliche Reihenfolge verloren. Es wäre eine interessante Feature-Anforderung an die Cipher-Entwickler, die ursprüngliche Reihenfolge für Elemente beizubehalten, die in ORDER BY vergleichsweise identisch sind.

Es gibt auch einen separaten Plan, um räumlich zu entwickelnFunktionen innerhalb von Chiffre selbst, und das wird das Problem lösen, wie Sie wollen. Zu diesem Zeitpunkt gibt es jedoch noch keine Informationen zu einem Entwicklungs- oder Veröffentlichungsplan.

Eine zusätzliche Option, die Ihnen bei einerkürzere Zeitrahmen und ist unabhängig von den neo4j Entwicklungsplänen selbst, ist es, eine Reihenfolge durch Erweiterung der räumlichen Indexabfrage hinzuzufügen. Im Augenblick geben Sie die Indexabfrage als "innerhalbDistanz: [70.67,12.998,6.0]" an, aber Sie könnten den Spatial Plugin-Code bearbeiten, um die Übergabe zusätzlicher Parameter an diese Abfrage zu unterstützen, und sie könnten eine Reihenfolge nach Parameter sein. Dann hätten Sie die vollständige Kontrolle über die Bestellung.