Um (brinquedo) de indexação de documentos de baixo nível
IndexermCIndexface é um pequeno sistema de indexação e recuperação tradicional de documentos que escrevi como desculpa para brincar com FSTs (usando o Crate BurntSushi/fst ) e os recursos de paralelização da Rust (usando também a caixa crossbeam para passagem de mensagens)
Características:
- Totalmente escrito em ferrugem
- Usa FSTs para acesso rápido a postagens
- Permite documentos em campo e usa o modelo de recuperação
BM25F (Nota: eu não verifiquei sua correção) - O estágio de indexação é paralelizado com um Threadpool, criando e mesclando índices independentes
- (Observe que isso é uma implementação ingênua e, embora seja extremamente rápido, pode estar realmente com fome de memória)
- O estágio de recuperação é paralelo com um threadpool, onde neste caso ele executa uma pesquisa diferente por cada token
AVISOS:
- Este é um projeto de brinquedo (por exemplo: os arquivos de índice não são compactados, as técnicas de paralelização são ingênuas e sedentas de recursos ...) e a API é muito básica.
Uso:
- Simplesmente execute
cargo run --release . main.rs criará uma coleção dummy de 1000 arquivos usando a caixa MitchellRhysHall/random_word e, em seguida, indexará e executará uma consulta randomizada moderada.
Possíveis melhorias:
- O uso de FSTs abre muitas possibilidades, pois as pesquisas do tipo Regex podem ser executadas facilmente.
- Melhores técnicas de paralelização: No momento, cada thread criará seu próprio índice de memória, que será posteriormente unido e escrito para arquivos binários. Isso significa que o uso da memória pode ser muito alto para coleções maiores de documentos.
- Melhores tokenizadores.
- N grama ou índices similares, mais elaborados.
- Modelos de recuperação alternativos, perguntas de frase, etc.