Il s'agit d'un projet personnel que j'ai réalisé pour en savoir plus sur deux choses: les systèmes de récupération d'informations et les combinateurs d'analyseurs.
Essentiellement, ce programme est un REP avec deux commandes: Index et Query.
Découvrez le dépôt, CD dans le répertoire, exécutez 'Stack Build'
Stack: https://docs.haskellstack.org/en/stable/readme/
La pile est géniale. Utilisez la pile.
Vous avez deux options.
Ne pas paniquer! Cela fonctionne comme prévu. Il s'agit d'un simple REP, donc le programme attend que vous exécutez des commandes. Le programme prend en charge deux - index et requête.
La commande index indexe un document et le prépare pour les recherches. La commande prend deux arguments. Le premier est un indice de document, sous forme entier. Le second est une liste de mots, séparés par l'espace.
Quelques exemples de commandes:
Notez que si vous réutilisez un index, le document précédent est supprimé en faveur du nouveau. Donc, si vous exécutez les commandes ci-dessus, puis recherchez une pizza, vous n'obtiendrez aucun résultat.
Les mots de la liste des mots doivent être composés de lettres. Les nombres et les symboles ne sont pas valides et lanceront une erreur.
La commande de requête exécute une recherche sur les documents que vous avez déjà indexés. La requête la plus simple est d'un seul mot:
Mais ils peuvent devenir plus avancés et particuliers en rejoignant les termes avec les opérateurs booléens - | (ou) et & (et), comme ainsi:
Vous pouvez nicher ces requêtes jusqu'à une longueur arbitraire, mais à mesure que vous ajoutez des opérateurs, la requête prendra plus de temps à fonctionner. En effet Cette application doit donc rejoindre (soit par union, soit par intersection) l'index qui en résulte les répertorie manuellement.
Notez également que chaque terme doit être imbriqué à Parens. Imaginez que vous êtes dans une étrange variante de Lisp et tout ira bien.
Entrez simplement une commande vide. Ctrl-D fonctionnera également (EOF).