Un sistema de indexación y recuperación de documentos de bajo nivel (juguete)
IndexermCindexface es un pequeño sistema tradicional de indexación y recuperación de documentos que escribí como una excusa para jugar con FSTS (usando la caja BurntSushi/fst ) y las capacidades de paralelización de Rust (usando también la caja crossbeam para pasar el mensaje)
Características:
- Totalmente escrito en óxido
- Utiliza FST para acceso rápido a publicaciones
- Permite documentos de campo y usa el modelo de recuperación
BM25F (nota: no verifiqué su corrección) - La etapa de indexación está paralelizada con un hilo creando y fusionando índices independientes
- (Tenga en cuenta que esta es una implementación ingenua, y aunque es extremadamente rápido, puede ser muy hambriento de la memoria)
- La etapa de recuperación está paralelo con un threadpool, donde en este caso ejecuta una búsqueda diferente para cada token
Advertencias:
- Este es un proyecto de juguete (por ejemplo: los archivos de índice no están comprimidos, las técnicas de paralelización son ingenuas y hambrientas de recursos ...) y la API es muy básica.
Uso:
- Simplemente ejecute
cargo run --release . main.rs creará una colección ficticia de 1000 archivos utilizando la caja MitchellRhysHall/random_word , y luego indexará y realizará una consulta aleatorizada de tamaño moderado.
Posibles mejoras:
- El uso de FST abre muchas posibilidades, ya que las búsquedas similares a regex se pueden realizar fácilmente.
- Mejores técnicas de paralelización: en este momento, cada hilo creará su propio índice en memoria, que luego se unirá y escribirá en archivos binarios. Esto significa que el uso de la memoria puede ser muy alto para colecciones más grandes de documentos.
- Mejores tokenizadores.
- N-gram o índices similares, más elaborados.
- Modelos de recuperación alternativos, consultas de frases, etc.