Ich verwende Apache Solr für die Durchführung von Suchanfragen zu einigen internen Dokumenten meines Computers (gespeichert in einer Datenbank). Ich bekomme wirklich seltsame Ergebnisse für Suchanfragen, die nach absteigender Relevanz geordnet sind. Zum Beispiel habe ich 5 Wörter in meiner Suchanfrage. Das relevanteste von 4 Ergebnissen ist ein Dokument, das nur 2 dieser Wörter mehrfach enthält. Das einzige Dokument, das alle Wörter enthält, ist zuletzt tot. Wenn ich die Wörter genau richtig ändere, dann sehe ich eine bessere Reihenfolge mit dem richtigen Artikel als der relevantesten. Wie gehe ich vor, um das zu beheben? Aus meiner Sicht sollte das Dokument, das alle 5 Wörter enthält, höher eingestuft werden als ein Dokument, das nur zwei dieser Wörter enthält (häufiger angegeben).Apache Solrs bizarre Suchrelevanz-Rangliste
Antwort
Was Solr getan hat, ist ein korrekter Algorithmus namens TF-IDF. Also, in Ihrem Fall könnte Reihenfolge durch diese Formel erklärt werden. Eine der möglichen Lösungen besteht darin, den TF-IDF-Wert zu ignorieren und einen Treffer im Dokument als einen zu zählen, da dann einfach ein Dokument mit 5 Übereinstimmungen 5, 4 Übereinstimmungen 4 usw. erhält der Trick:
Constant-Score-Abfragen werden mit^= erstellt, die die gesamte Klausel an die angegebene Punktzahl für alle Dokumente setzt diese Klausel entsprechen. Dies ist wünschenswert, wenn Sie nur Übereinstimmungen für eine bestimmte Klausel interessieren und keine anderen Relevanzfaktoren wie wie Häufigkeit (die Anzahl der Male im Feld erscheint) oder inverse Dokumenthäufigkeit (ein Maß über das Ganze) Index für wie selten ein Begriff in einem Feld ist).
Mögliche Beispiel für die Abfrage:
text:Julian^=1 text:Cribb^=1 text:EPA^=1 text:peak^=1 text:oil^=1
Eine andere Lösung, die eine gewisse Scripting erforderlich ist, werden in etwa so sein, zuerst eine Abfrage benötigen, wo Sie alles genau 5 Elemente fragen enthält, z.B +Julian +Cribb +EPA +peak +oil
, dann werden Sie das gleiche für die Kombination von 4 Elementen von 5 tun, wenn ich mich nicht irre, wird es zusätzliche 5 Abfragen erfordern und zurück, bis Sie alles bis 1 obligatorische Klausel überprüfen. Dann haben Sie volle Ergebnisse, und Sie müssen nur normalise Ergebnisse oder nur verketten, wenn Sie entschieden, dass 5-matched Docs immer besser als 4-matched Docs. Nachteile dieser Lösung - eine Menge von Abfragen, müssen sie programmgesteuert ausführen, einige Skript würde helfen, Normalisierung ist nicht offensichtlich. Pros - Sie behalten sowohl TF-IDF als auch die Idee der passenden Begriffe.
Danke, aber ich bin auf der Suche nach etwas, das sowohl Häufigkeit als auch wie viele der angegebenen Suchbegriffe in den Ergebnissen berücksichtigt werden würde. Ich möchte nur Dokumenten, die mehr Suchbegriffe enthalten, wesentlich mehr Gewicht verleihen als Dokumenten, die weniger Begriffe enthalten (viele Male mehr). Ich werde deine Methode ausprobieren. Vielen Dank. – ron136
wird es fast unmöglich sein, zumindest ohne die zusätzliche Programmierung. – Mysterion
dies ist möglicherweise nicht korrekt ... wenn er Solr 6 oder später verwendet, ist die Standard-Scoring-Methode BM25, nicht TD-IDF – Persimmonium
- 1. Wie man Solrs Facette zur Navigation benutzt
- 2. Python bizarre Klassenproblem
- 3. bizarre C-Anweisung
- 4. Bizarre Deadlock in MPI_Allgather
- 5. Bizarre Fehler mit Response.Redirect
- 6. Bizarre Bug in C
- 7. Bizarre NSSet Kopieren Absturz
- 8. IIS 500.19, bizarre Fehler
- 9. Bizarre SQL Server-Berechtigungen Frage
- 10. WooCommerce: Produkte-of-Kategorie Schleife bizarre Probleme
- 11. Wie behebe ich dieses Bizarre DataGridview Verhalten
- 12. Bizarre Beenden Verhalten von Thread mit tkinter
- 13. Bizarre SimpleMODAL OSX Aktionen in Foreach Loop
- 14. Bizarre zitierte Liste Beispiel von On Lisp
- 15. I2C bizarre Verzögerung Problem beim Lesen
- 16. VB6 mehrere IF-Anweisung bizarre Ausgabe
- 17. Am meisten bizarre PHP/MySQL-Bug
- 18. Bizarre Situation - Eingabe der 100-stelligen Nummer gefragt
- 19. Parameter Pack Erweiterung in Klammern gibt bizarre Ausgabe
- 20. Bizarre Encodierung in Antwort von ZF2 api Anruf mit curl
- 21. Ausnahmeproblem mit ODBC und C++ verursacht bizarre Datenbankverhalten
- 22. Eine bizarre Situation mit einem Eingabefeld im Formular
- 23. Weitere bizarre Ergebnisse mit: groupby und nlargest() in Pandas
- 24. Mehrere Tabellen im Modell verursachen bizarre Probleme in C# -Programm
- 25. Geben Sie eine Datei mit einem anderen Trennzeichen, kein Komma, in Solrs SimplePOSTTool
- 26. Apache Jena vs Apache Marmotta
- 27. Apache Spark vs Apache Storm
- 28. Apache Solr 6.4.1 Qtime ist viel mehr als Qtime der gleichen Abfrage in Solr 3.6.1
- 29. Apache Tika und Apache PDFBox 2.0
- 30. Apache Wicket vs Apache Klicken Sie auf
könnten Sie die Abfrage, die Sie tun, und die Dokumente, die oben & unten sind, posten –
Meine Suchanfrage lautet: "Julian Cribb EPA peak oil". Das relevanteste Dokument ist einfach eines, das Julian 2 Mal und Cribb 5 Mal erwähnt. Der Begriff "Julian Cribb" erscheint in diesem Dokument zweimal. Die zweite enthält zweimal "Cribb", einmal "Julian" und einmal "peak oil". Der dritte enthält einmal 'Julian' und einmal 'Cribb' (aber nicht zusammen, weil Cribb nicht hervorgehoben wurde). Die letzte enthält EPA 3 Mal, "peak Öl" einmal und "Julian" einmal und "Cribb" einmal. Alle 4 Titel enthalten 'Cribb'. – ron136
Bitte fügen Sie die & wt = xml & debug = true in Ihre Anfrage und geben Sie Ihre Ausgabe der Ansicht Quelle in http://pastebin.com/index.php –