Dies ist ein persönliches Projekt, das ich gemacht habe, um mehr über zwei Dinge zu erfahren: Informationsabrufsysteme und Parser -Kombinators.
Im Wesentlichen ist dieses Programm eine Wiederholung mit zwei Befehlen: Index und Abfrage.
Schauen Sie sich das Repo an, CD in das Verzeichnis, führen Sie "Stack Build" aus
Stack: https://docs.haskellstack.org/en/stable/readme/
Stack ist großartig. Verwenden Sie Stack.
Sie haben zwei Optionen.
Keine Panik! Dies funktioniert wie beabsichtigt. Dies ist eine einfache Wiederholung, daher wartet das Programm darauf, dass Sie Befehle ausführen. Das Programm unterstützt zwei - Index und Abfrage.
Der Indexbefehl indiziert ein Dokument und macht es für die Suche vorbereitet. Der Befehl nimmt zwei Argumente an. Der erste ist ein Dokumentindex in Ganzzahlform. Die zweite ist eine Liste von Wörtern, die durch Whitespace getrennt sind.
Ein paar Beispielbefehle:
Beachten Sie, dass das vorherige Dokument, wenn Sie einen Index wiederverwenden, zugunsten des neuen gelöscht wird. Wenn Sie also die obigen Befehle ausführen und dann nach Pizza suchen, erhalten Sie keine Ergebnisse.
Wörter in der Wortliste müssen aus Buchstaben enthalten sein. Zahlen und Symbole sind nicht gültig und werfen einen Fehler.
Der Befehl Abfrage führt eine Suche in den zuvor indizierten Dokumenten aus. Die einfachste Abfrage stammt von einem einzelnen Wort:
Aber sie können fortgeschrittener und besonderer werden, indem sie mit den Booleschen Betreibern verbunden werden - | (oder) und & (und) wie SO:
Sie können diese Abfragen auf willkürliche Länge nisten, aber wenn Sie die Betreiber hinzufügen, dauert die Abfrage länger. Dies liegt daran, dass die Volltext-Search-Bibliothek die booleschen Abfragen nicht unterstützt, nur um Suchanfragen. Daher muss sich diese Anwendung (entweder nach Union oder durch Kreuzung) an den resultierenden Index beitragen.
Beachten Sie auch, dass jede Amtszeit in Parens verschachtelt sein muss. Stellen Sie sich vor, Sie sind in einer seltsamen Variante von Lisp und es wird Ihnen gut gehen.
Geben Sie einfach einen leeren Befehl ein. STRL-D funktioniert auch (EOF).