การจัดทำดัชนีเอกสารระดับต่ำ (ของเล่น) การจัดทำดัชนีเอกสารระดับต่ำและระบบดึงข้อมูล
IndexMcIndexface เป็นดัชนีการจัดทำดัชนีและการดึงข้อมูลแบบดั้งเดิมที่ฉันเขียนเป็นข้ออ้างในการเล่นกับ FSTs (ใช้ลัง BurntSushi/fst ) และความสามารถในการทำให้เป็นคู่ขนานของ Rust (ใช้ crossbeam Crate สำหรับการส่งข้อความ)
คุณสมบัติ:
- เขียนอย่างเต็มที่ในสนิม
- ใช้ FST สำหรับการเข้าถึงการโพสต์อย่างรวดเร็ว
- อนุญาตให้เอกสารภาคสนามและใช้โมเดลการดึงข้อมูล
BM25F (หมายเหตุ: ฉันไม่ได้ตรวจสอบความถูกต้อง) - ขั้นตอนการจัดทำดัชนีจะถูก paralellelized ด้วย threadpool โดยการสร้างและรวมดัชนีอิสระ
- (โปรดทราบว่านี่เป็นการใช้งานที่ไร้เดียงสาและถึงแม้ว่ามันจะเร็วมาก แต่ก็สามารถหิวโหยได้จริงๆ)
- ขั้นตอนการดึงข้อมูลจะถูกขนานกับ Threadpool ซึ่งในกรณีนี้จะเรียกใช้การค้นหาที่แตกต่างกันสำหรับโทเค็นทุกอย่าง
คำเตือน:
- นี่คือโครงการของเล่น (เช่น: ไฟล์ดัชนีไม่ได้ถูกบีบอัดเทคนิคการทำให้เป็นคู่ขนานนั้นไร้เดียงสาและหิวโหยทรัพยากร ... ) และ API นั้นพื้นฐานมาก
การใช้งาน:
- เพียงเรียกใช้งาน
cargo run --release ปล่อย main.rs จะสร้างคอลเลกชันจำลอง 1,000 ไฟล์โดยใช้ MitchellRhysHall/random_word Crate จากนั้นจะจัดทำดัชนีและดำเนินการสืบค้นขนาดปานกลางแบบสุ่ม
การปรับปรุงที่เป็นไปได้:
- การใช้ FSTs เปิดโอกาสให้เกิดความเป็นไปได้มากมายเนื่องจากการค้นหาเหมือน Regex สามารถทำได้อย่างง่ายดาย
- เทคนิคการขยายแบบขนานที่ดีขึ้น: ตอนนี้แต่ละเธรดจะสร้างดัชนีในหน่วยความจำของตัวเองซึ่งจะเข้าร่วมและเขียนในไฟล์ไบนารีในภายหลัง ซึ่งหมายความว่าการใช้หน่วยความจำอาจสูงมากสำหรับคอลเลกชันที่ใหญ่กว่าของเอกสาร
- ดีกว่าโทเคนิเซอร์
- N-Gram หรือคล้ายกันมีความซับซ้อนมากขึ้นดัชนี
- แบบจำลองการดึงข้อมูลทางเลือกแบบสอบถามวลี ฯลฯ