Schneidende Grenzen mit lucene
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.
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.