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

KI-Agenten dominieren den Einkauf. Ist Ihre Website auf die KI-gestützte Suche vorbereitet?

Generative KI-Agenten wie ChatGPT definieren die Produktsuche neu. Erfahren Sie, wie Sie...

Read More

Vom Suchunternehmen zum praktischen KI-Pionier: Unsere Vision für 2025 und darüber hinaus

CEO Mike Sinoway gibt Einblicke in die Zukunft der KI und stellt...

Read More

Wenn KI schief geht: Fehlschläge in der realen Welt und wie man sie vermeidet

Lassen Sie nicht zu, dass Ihr KI-Chatbot einen 50.000 Dollar teuren Tahoe...

Read More

Quick Links