Genetischer Ranger ist ein Rahmen, das die Kraft genetischer Algorithmen verwendet, um optimale Suchgewichte für Elasticsearch- oder Solr -Abfragen zu finden.
Das Finden optimaler Suchgewichte für Felder ist langlebig und undankbar. Stellen Sie sich einen Index mit Millionen von Dokumenten vor, jeder mit zehn Feldern und hundert Abfragen, die getestet werden sollten, um sicherzustellen, wie gut die tatsächliche Konfiguration ist. Ihre Aufgabe ist es zu bestimmen, wie wichtig bestimmte Felder sind. Es kann ein Leben lang dauern.
Ich habe einen Beitrag darüber in meinem Blog geschrieben und einen Blick darauf werfen, wenn Sie weitere Informationen zu diesem Prozess benötigen.
Erstens ist es einfach, das Problem als Satz von numerischen Gewichten zu definieren , die während der Verarbeitung verändert werden können. Mutation, Crossover- und Fortpflanzungsteile des Algorithmus können leicht auf Zahlen durchgeführt werden.
Zweitens sind genetische Algorithmen in der Lage, Lösungen zu erhalten, die vielversprechend sind , auch ohne das tatsächliche Verständnis eines Problems. Bessere Arten (Individuen) werden für noch bessere Vorfahren aufbewahrt.
Drittens verleiht Algorithmus aufgrund von Mutations- und Crossover -Teilen dem Prozess ein bisschen Zufälligkeit . Es kann helfen, die beste Antwort zu finden, auch wenn tatsächlich gut ist.
Mehr dazu hier.
Um GeneticRanker zu starten, müssen Sie eine Ranker.py -Datei ausführen. Das Projekt enthält alle Daten, die zum Nachweis einfacher Anwendungsfall erforderlich sind.
In Ranker.py sollten Sie definieren, wie viele Felder Sie verwenden möchten ( Gene_size in Ranker ). Geben Sie dann diese Felder in der Evaluator -Klasse ( Felder ) an.
In Abfragen.csv müssen Sie Anwendungsfälle angeben, die Sie testen möchten. Das Format lautet:
[Query], [document_id]: [erwartete_position]: [good_enough_position]
In Properties.ini können Sie definieren, welche Suchmaschine Sie verwenden möchten: Elasticsearch oder Solr. Abfragen sollten in Essearcher.py bzw. SolreSearcher.py definiert werden.
Stellen Sie sich vor, Sie sind ein Suchingenieur, der optimale Gewichte für Felder finden muss, auf denen die Abfragen ausgeführt werden. Die einzigen Dinge, die Sie haben, sind Dateiabfragen.csv , die Abfragen und Dokumente im Index enthalten. Bevor Sie GeneticRanker ausführen, müssen Sie diese CSV-Datei lesen und Dokumente von Abfragen-EES.txt analysieren.
Es gibt nur 8 Dokumente und 10 Abfragen, aber ich garantiere, dass Sie eine Weile mit dieser Aufgabe verbringen können.
Im Datenverzeichnis gibt es Dateien mit Dokumenten. Sie können alle Elasticsearch- und Solr -Möglichkeiten verwenden, um sie zu indizieren, aber für das erstere habe ich Postman -Tool und für das spätere - Solr -Administratorfeld verwendet.
Wenn der Server eingeladen wird, sollte ausreichen, um ein Skript auszuführen und die Ergebnisse zu sehen.
Deap Elasticsarch Pysolr
Sie sollten ihre Lizenzen überprüfen und entscheiden, ob Sie sie in Ihrer Software verwenden möchten. Der genetische Algorithmus wird unter Verwendung von DEAP -Framework implementiert.
Jeder Anwendungsfall erfordert möglicherweise eine Änderung der genetischen Algorithmuswerte oder des Algorithmus selbst, aber die vorgeschlagene Konfiguration sollte ein guter Ausgangspunkt sein. Gerne benutze!