Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Die Relevanz der Volltextsuche wird gemessen in?

Die grundlegende Datenstruktur für ein Textabrufsystem ist ein Invertierter Index . Dies ist im Wesentlichen eine Liste von Wörtern, die in der Dokumentensammlung gefunden wurden, mit einer Liste der Dokumente, in denen sie vorkommen. Sie kann auch Metadaten über das Vorkommen für jedes Dokument enthalten, z. B. wie oft das Wort vorkommt.

Dokumente, die die Wörter enthalten, können abgefragt werden, indem die Suchbegriffe abgeglichen werden. Um die Relevanz zu bestimmen, wird eine als Cosine Ranking bekannte Heuristik verwendet wird auf die Treffer berechnet. Dies funktioniert durch Konstruieren eines n-dimensionalen Vektors mit einer Komponente für jeden der n Suchbegriffe. Auf Wunsch können Sie die Suchbegriffe auch gewichten. Dieser Vektor gibt einen Punkt im n-dimensionalen Raum an, der Ihren Suchbegriffen entspricht.

Ein ähnlicher Vektor basierend auf den gewichteten Vorkommen in jedem Dokument kann aus dem invertierten Index konstruiert werden, wobei jede Achse in dem Vektor der Achse für jeden Suchbegriff entspricht. Wenn Sie ein Skalarprodukt dieser Vektoren berechnen, erhalten Sie den Kosinus des Winkels zwischen ihnen. 1,0 ist äquivalent zu cos (0), was davon ausgehen würde, dass die Vektoren eine gemeinsame Linie vom Ursprung belegen. Je näher die Vektoren beieinander liegen, desto kleiner ist der Winkel und desto näher liegt der Kosinus bei 1,0.

Wenn Sie die Suchergebnisse nach dem Kosinus sortieren (oder sie in eine Prioritätswarteschlange als mg tut) erhalten Sie die relevantesten. Cleverere Relevanzalgorithmen neigen dazu, mit der Gewichtung der Suchbegriffe herumzuspielen und das Skalarprodukt zugunsten von Begriffen mit hoher Relevanz zu verzerren.

Wenn Sie ein wenig graben möchten, Gigabytes verwalten von Bell und Moffet diskutiert die interne Architektur von Text-Retrieval-Systemen.