(Игрушка) система индексации и поиска документов.
IndexermCindexface - это крошечная традиционная система индексации и поиска документов, которую я написал в качестве предлога, чтобы играть с FSTS (с использованием ящика BurntSushi/fst ) и возможностей параллеля Rust (с использованием также ящика crossbeam для передачи сообщений)
Функции:
- Полностью написанный в ржавчине
- Использует FST для быстрого доступа к публикациям
- Позволяет заставленные документы и использует модель поиска
BM25F (примечание: я не проверял ее правильность) - Стадия индексации паралеллируется с помощью потока путем создания и объединения независимых индексов
- (Обратите внимание, что это наивная реализация, и хотя она очень быстро, она может быть действительно голодной памятью)
- Стадия поиска параллелизируется с темой, где в этом случае он проходит различный поиск каждого токена
Предупреждения:
- Это игрушечный проект (например: индексные файлы не сжаты, методы параллелизации наивны и жаждут ресурса ...), а API очень простые.
Использование:
- Просто запустите
cargo run --release . main.rs создаст фиктивную коллекцию из 1000 файлов с использованием ящика MitchellRhysHall/random_word , а затем будет индексировать и выполнить рандомизированный запрос умеренного размера.
Возможные улучшения:
- Использование FSTs открывает много возможностей, так как поиск, подобные коррексу, можно легко выполнить.
- Лучшие методы параллелей: прямо сейчас каждый поток создаст свой собственный индекс в памяти, который позже будет присоединен и записан в двоичные файлы. Это означает, что использование памяти может быть очень высоким для более крупных коллекций документов.
- Лучшие токенизаторы.
- N-грамм или аналогичные, более сложные, индексы.
- Альтернативные модели поиска, фразы и т. Д.