Sistem pengindeksan dan pengambilan dokumen tingkat rendah (mainan)
IndexermCindExface adalah sistem pengindeksan dokumen dan pengambilan dokumen tradisional yang saya tulis sebagai alasan untuk bermain dengan FST (menggunakan peti BurntSushi/fst ) dan kemampuan paralelisasi Rust (menggunakan juga peti crossbeam untuk menyampaikan pesan)
Fitur:
- Ditulis sepenuhnya dalam karat
- Menggunakan FST untuk akses cepat ke posting
- Mengizinkan dokumen -dokumen yang di -field, dan menggunakan model pengambilan
BM25F (Catatan: Saya tidak memverifikasi kebenarannya) - Tahap pengindeksan paralellisasi dengan threadpool dengan membuat dan menggabungkan indeks independen
- (Perhatikan bahwa ini adalah implementasi yang naif, dan meskipun sangat cepat bisa benar -benar haus memori)
- Tahap pengambilan diparalelkan dengan threadpool, di mana dalam hal ini menjalankan pencarian yang berbeda untuk setiap token
Peringatan:
- Ini adalah proyek mainan (misalnya: file indeks tidak dikompresi, teknik paralelisasi naif dan haus sumber daya ...) dan API sangat mendasar.
Penggunaan:
- Cukup jalankan
cargo run --release . main.rs akan membuat koleksi boneka 1000 file menggunakan peti MitchellRhysHall/random_word , dan kemudian akan mengindeks dan melakukan kueri berukuran sedang secara acak.
Kemungkinan perbaikan:
- Penggunaan FSTS membuka banyak kemungkinan, karena pencarian seperti Regex dapat dengan mudah dilakukan.
- Teknik paralelisasi yang lebih baik: Saat ini, setiap utas akan membuat indeks dalam memori sendiri, yang nantinya akan bergabung dan ditulis ke file biner. Ini berarti bahwa penggunaan memori bisa sangat tinggi untuk koleksi dokumen yang lebih besar.
- Tokenizer yang lebih baik.
- N-gram atau yang serupa, lebih rumit, indeks.
- Model pengambilan alternatif, kueri frasa, dll.