Este es un proyecto personal que hice para aprender más sobre dos cosas: sistemas de recuperación de información y combinadores de analizador.
En esencia, este programa es una replica con dos comandos: índice y consulta.
Consulte el repositorio, CD en el directorio, ejecute 'Stack Build'
Pila: https://docs.haskellstack.org/en/stable/readme/
Stack es increíble. Use pila.
Tienes dos opciones.
¡No entrar en pánico! Esto está funcionando según lo previsto. Este es un simple replica, por lo que el programa está esperando que ejecute comandos. El programa admite dos - índice y consulta.
El comando de índice indexa un documento y lo prepara para las búsquedas. El comando toma dos argumentos. El primero es un índice de documentos, en forma entera. El segundo es una lista de palabras, separadas por Whitespace.
Algunos comandos de ejemplo:
Tenga en cuenta que si reutiliza un índice, el documento anterior se elimina a favor del nuevo. Entonces, si ejecuta los comandos anteriores y luego busca pizza, no obtendrá ningún resultado.
Las palabras en la lista de palabras deben estar compuestas por letras. Los números y los símbolos no son válidos y lanzarán un error.
El comando de consulta ejecuta una búsqueda en los documentos que ha indexado previamente. La consulta más simple es de una sola palabra:
Pero pueden volverse más avanzados y particulares uniendo términos con operadores booleanos - | (o) y y (y), como así:
Puede anidar estas consultas a una longitud arbitraria, pero a medida que agrega operadores, la consulta tardará más en funcionar. Esto se debe a que la biblioteca de búsqueda de texto completo no es compatible con consultas booleanas, solo búsquedas a término. Por lo tanto, esta aplicación tiene que unirse (ya sea por unión o por intersección), las listas de índice resultante manualmente.
Tenga en cuenta también que cada término tiene que estar anidado en los padres. Finge que estés en una variante extraña de Lisp y estarás bien.
Simplemente ingrese un comando vacío. CTRL-D también funcionará (EOF).