Frage

Ich verwende Lucene, und ich versuche, einen Weg zu Index zu finden und Abrufen von Dokumenten, die eine Fern Eigenschaft haben.

Zum Beispiel habe ich:

Document 1: Price:[30 TO 50]
Document 2: Price:[45 TO 60]
Document 3: Price:[60 TO 70]

und Ich möchte für alle Dokumente, deren Bereiche intersect einem bestimmten Intervall , in dem obigen Beispiel suchen, wenn ich für Price in [55 TO 65] suche ich sollte Document 2 und Document 3 als Ergebnisse erhalten.

Ich glaube nicht, NumericRangeQueries allein würde den Trick tun, muss ich an die Arbeit auf dem Index mit etwas Ähnliches wie R-Bäume, sondern implementiert sie in Lucene? Auch ich nehme an, dass, was ich brauche sollte eine Unterklasse von MultiTermQuery sein, da die Abfrage Price in [55 TO 65] zwei Grenzen hat, aber ich weiß nicht alles geeignet unter MultiTermQuery die Unterklassen sehen.

Jede Hilfe ist geschätzt, Dank,

Silvio

P. S. Ich verwende Lucene 2.9.0, aber ich kann auf die neueste Version zu aktualisieren, wenn nötig.

War es hilfreich?

Lösung

Eine einfache Möglichkeit, zu versuchen, während der Index Zeit, indem Sie die Bereiche an jedem diskreten Wert im Bereich erweitern. So [30 bis 50] würde indiziert werden, wie 30, 31, 32, 33, 34, usw. Verwenden Sie dann die normale Bereich Abfrage den Bereich abzufragen. Nur so lange, wie es nicht Tonnen von diskreten Werten (in Millionen) diese gut genug ausführen könnte.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top