Definition: Termbasierte Partitionierung

Als Termbasierte Partitionierung bezeichnen wir eine Form des Intra-Query-Parallelism, bei der ein Gesamtindex auf eine Menge von Knoten aufgeteilt wird, wobei jeder Knoten den Index für eine Menge von Termen hält.

Alle Queries werden an einen Masterknoten (auch Receptionist) gestellt. Dieser zerlegt eine Query in ihre einzelnen Terme und verarbeitet sie termweise in einer Pipeline.

Dazu wird die Query zunächst an den Knoten gesendet, der für den ersten Term zuständig ist. Dieser erzeugt eine initiale Menge von Score-Akkumulatoren. Die Akkumulatoren werden anschließend zusammen mit der Query an den Knoten des nächsten Terms weitergeleitet, der sie aktualisiert. Dieser Prozess wird für alle Queryterme fortgesetzt.

Der letzte Termknoten sendet die finalen Score-Akkumulatoren an den Receptionist, der daraus die Top Dokumente auswählt und an den Nutzer zurückgibt.

  • Vorteile:
    • Query wird nur von Knoten verarbeitet, die relevante Terme enthalten
  • Nachteile:
    • Große Last auf wenigen Knoten (wenn einige Terme sehr, sehr häufig auftreten)
    • Erhöhter Kommunikationsaufwand durch Weiterreichen der Akkumulatoren
    • Fällt ein Knoten ersatzlos aus, können viele Queries nicht mehr beantwortet werden

Anmerkung

Beispiel

Das folgende Beispiel zeigt jeweils eine Partitionierung nach Dokumenten (rote Rahmen) und nach Termen (blaue Rahmen):