Bereiche über Funktionen in Solr 1.4
Solr 1.4 enthält eine neue Funktion, die Bereichsabfragen oder Bereichsfilter über beliebige Funktionen ermöglicht. Sie ist als Standard-Solr-QParser-Plugin implementiert und kann daher überall dort verwendet werden, wo die Standard-Solr-Query-Syntax akzeptiert wird, indem der Typ der Bereichsabfrage angegeben wird. Hier ist ein Beispiel für einen Filter, der die unteren und oberen Grenzen einer Funktion angibt:
fq={!frange l=0 u=2.2}log(sum(user_ranking,editor_ranking))
Ein weiterer interessanter Einsatzbereich von frange ist der Tausch von Speicher gegen Geschwindigkeit bei Bereichsabfragen für alle Arten von einwertigen Feldern. Sie können frange zum Beispiel für ein String-Feld verwenden, vorausgesetzt, es gibt nur einen Wert pro Feld und numerische Funktionen werden vermieden.
Hier ist zum Beispiel ein Filter, der nur Autoren zwischen martin und rowling zulässt und mit einer Standardbereichsabfrage angegeben wird:
fq=author_last_name:[martin TO rowling]
Und den gleichen Filter mit einer Funktionsbereichsabfrage(frange):
fq={!frange l=martin u=rowling}author_last_name
Dies kann zu erheblichen Leistungsverbesserungen bei Bereichsabfragen mit vielen Termen zwischen den Endpunkten führen, allerdings auf Kosten des Speichers für die nicht invertierte Form des Feldes (d.h. ein FieldCache-Eintrag – wie er auch für die Sortierung verwendet würde). Wenn das betreffende Feld bereits für die Sortierung oder andere Funktionsabfragen verwendet wird, entsteht kein zusätzlicher Speicheraufwand.
Das folgende Diagramm zeigt die Ergebnisse eines Tests von Bereichsabfragen im Vergleich zu Standardbereichsabfragen für ein Stringfeld mit 200.000 eindeutigen Werten. Frange war beispielsweise 14 Mal schneller bei der Ausführung einer Bereichsabfrage/eines Bereichsfilters, die/der 20% der Begriffe im Feld abdeckte. Bei engeren Bereichen, die weniger als 5 % der Werte abdeckten, schnitt die herkömmliche Bereichsabfrage besser ab.
Prozentsatz der abgedeckten Begriffe | Schnellste Implementierung | Beschleunigung (um wie viel schneller) |
---|---|---|
100% | frange | 43.32 |
20% | frange | 14.25 |
10% | frange | 8.07 |
5% | frange | 1.337 |
1% | Abfrage des normalen Bereichs | 3.59 |
Natürlich enthält Solr 1.4 auch die neue TrieRange-Funktionalität , die im Allgemeinen das beste Zeit-/Platzprofil für Bereichsabfragen über numerische Felder bietet.