Abfragen der Solr-Relevanzfunktion

Die Standard-Ranking-Funktion von Lucene verwendet Faktoren wie tf, idf und norm, um die Relevanzwerte zu berechnen.
Solr hat diese Faktoren jetzt als Funktionsabfragen bereitgestellt.

  • docfreq(Feld,Begriff) gibt die Anzahl der Dokumente zurück, die den Begriff im Feld enthalten.
  • termfreq(Feld,Begriff) gibt die Anzahl der Vorkommen des Begriffs in dem Feld für dieses Dokument zurück.
  • idf(feld,begriff) gibt die inverse Dokumenthäufigkeit für den angegebenen Begriff zurück, wobei die Ähnlichkeit für das Feld verwendet wird.
  • tf(feld,term) gibt den Termhäufigkeitsfaktor für den angegebenen Term zurück, wobei die Ähnlichkeit für das Feld verwendet wird.
  • norm(field) gibt die im Index gespeicherte „Norm“ zurück, das Produkt aus dem Index-Zeit-Boost und dem Längen-Normalisierungsfaktor.
  • maxdoc() gibt die Anzahl der Dokumente im Index zurück, einschließlich derer, die als gelöscht markiert sind, aber noch nicht bereinigt wurden.
  • numdocs() gibt die Anzahl der Dokumente im Index zurück, ohne die Dokumente, die als gelöscht markiert sind, aber noch nicht bereinigt wurden.

Wir können diese neuen Funktionen nutzen, um eigene Ranking-Funktionen zu entwickeln und zu testen! Wenn wir zum Beispiel ein einfaches tf*idf für einen bestimmten Begriff benötigen, könnten wir die folgende Funktionsabfrage stellen (wenn Sie den Beispielserver von Solr mit indizierten Beispieldokumenten laufen haben, klicken Sie einfach auf den folgenden Link):

http://localhost:8983/solr/select/?fl=score,id&defType=func&q=mul(tf(Text,Speicher),idf(Text,Speicher))

Um die Wiederholung des von uns verwendeten Begriffs (Text, Speicher) zu vermeiden, können wir das Feld und den Begriff in andere Abfrageparameter übertragen:

http://localhost:8983/solr/select/?fl=score,id&defType=func&q=mul(tf($f,$t),idf($f,$t))&f=text&t=memory

Mithilfe der neuen Fähigkeit von Solr, Abfragen nach beliebigen Funktionen zu sortieren, können wir nun eine Abfrage nach der Häufigkeit sortieren, mit der ein bestimmter Begriff in jedem Dokument vorkommt. Die folgende Abfrage sucht nach Dokumenten, die mit „DDR“ übereinstimmen, sortiert dann aber nach der Anzahl, wie oft „Speicher“ im Textfeld erscheint.

http://localhost:8983/solr/select/?fl=score,id&q=DDR&sort=termfreq(text,speicher) desc

Wir könnten auch die Funktion „norm“ verwenden, um zuerst nach dem längsten Feld zu sortieren. Dabei wird davon ausgegangen, dass es keine Index-Zeit-Boosts gab und die Norm daher nur der Standard-Längennormalisierungsf-Akteur ist.

http://localhost:8983/solr/select/?fl=score,id&q=DDR&sort=norm(text) asc

Angesichts der Fülle von Funktionsabfragen in Solr (einschließlich der neuen räumlichen Abfragen, die den Abstand zwischen Punkten zurückgeben) sind die Möglichkeiten nahezu unbegrenzt. Um dies auszuprobieren, benötigen Sie einen aktuellen Nightly-Build von Solr 4.0-dev oder Lucidworks Enterprise, unsere kommerzielle Version von Solr.

You Might Also Like

Wie Lenovo die Suche zu einem strategischen Wachstumstreiber in der KI-Ära machte

Erfahren Sie, wie Lenovo mit Lucidworks die Suche in einen strategischen Wachstumstreiber...

Read More

Der Stand der generativen KI 2025: 3 Fragen, um Ihre Bereitschaft für agenturische KI zu verstehen

Wie gut sind Unternehmen auf agentenbasierte KI vorbereitet? Die Daten von Lucidworks...

Read More

Wir geben unsere Gewinner des Superstars of Search Award 2025 bekannt: Mouser, TE, und Coppel

Wir feiern 3 unglaubliche Lucidworks-Kunden, die ihre Sucherfahrung verändert und hervorragende Geschäftsergebnisse...

Read More

Quick Links