Le Ranker génétique est un cadre utilisant la puissance des algorithmes génétiques pour trouver des poids de recherche optimaux pour les requêtes Elasticsearch ou Solr.
Trouver des poids de recherche optimaux pour les champs est un processus durable et ingrat. Imaginez un index avec des millions de documents, chacun avec des dizaines de champs et des centaines de requêtes qui doivent être testées pour garantir la bonne configuration réelle. Votre travail consiste à déterminer à quel point sont l'importance des champs particuliers. Cela peut prendre une vie.
J'ai écrit un article à ce sujet sur mon blog, jetez un œil si vous avez besoin de plus d'informations sur ce processus.
Premièrement, il est facile de définir le problème comme un ensemble de poids numériques qui peuvent être modifiés pendant le traitement. Les parties de mutation, de croisement et de reproduction de l'algorithme peuvent facilement être effectuées sur des nombres.
Deuxièmement, les algorithmes génétiques sont capables de préserver des solutions prometteuses , même sans compréhension réelle d'un problème. De meilleures espèces (individus) seront gardées et seront des ancêtres pour des meilleurs meilleurs.
Troisièmement, en raison des parties de mutation et de croisement, l'algorithme ajoute un peu de hasard au processus . Il peut être utile de trouver la meilleure réponse même si réel est bon.
Plus à ce sujet, encore une fois, ici.
Pour démarrer GeneticRanker, vous devez exécuter un fichier Ranker.py. Le projet contient toutes les données nécessaires pour démontrer un cas d'utilisation simple.
Dans Ranker.py, vous devez définir le nombre de champs que vous souhaitez utiliser ( Gene_Size dans Ranker ). Spécifiez ensuite ces champs dans la classe Evaluator ( champs ).
Dans Queries.csv, vous devez spécifier les cas d'utilisation que vous souhaitez tester. Le format est:
[Query], [document_id]: [attendu_position]: [good_enough_position]
Dans Properties.ini, vous pouvez définir le moteur de recherche que vous souhaitez utiliser: Elasticsearch ou Solr. Les requêtes doivent être définies dans Essearcher.py et solrsearcher.py respectivement.
Imaginez que vous êtes un ingénieur de recherche qui doit trouver des poids optimaux pour les champs sur lesquels les requêtes sont exécutées. La seule chose que vous avez est de fichier requêtes.csv , contenant des requêtes et des documents dans l'index. Avant d'exécuter GeneticRanker, prenez un certain temps pour lire ces fichiers CSV et analyser les documents de Queries-es.txt .
Il n'y a que 8 documents et 10 requêtes, mais je vous garantis que vous pouvez passer un certain temps sur cette tâche.
Dans le répertoire de données , il existe des fichiers contenant des documents. Vous pouvez utiliser toutes les façons Elasticsearch et SOLR de les indexer, mais pour le premier outil Postman, j'ai utilisé et pour le panneau d'administration SOLR ultérieur.
Avoir le serveur opérationnel devrait être suffisant pour exécuter un script et voir les résultats.
BEAP Elasticsearch pysolr
Vous devez vérifier leurs licences et décider si vous souhaitez les utiliser dans votre logiciel. L'algorithme génétique est implémenté à l'aide du cadre DEAP.
Chaque cas d'utilisation peut nécessiter une altération des valeurs d'algorithme génétique ou de l'algorithme lui-même, mais la configuration proposée devrait être un bon point de départ. Heureux d'utiliser!