Sistem mesin pencari peer-to-peer
Proyek ini merupakan implementasi sebagai perpustakaan protokol Kamilata. Kamilata memungkinkan pencarian tanpa kepercayaan di jaringan terbuka. Perpustakaan ini dapat menangani semua jenis data, dan mudah diintegrasikan ke dalam aplikasi libp2p Anda.
Beberapa kasus penggunaan dimungkinkan:
Algoritma peringkat terserah Anda, karena perpustakaan ini hanya akan memberi Anda aliran hasil pencarian yang tidak teratur. Berdasarkan metadata yang Anda sertakan dalam hasil tersebut, Anda dapat memberi peringkat sesuai keinginan Anda.
Kamilata adalah sistem pertama di dunia yang menawarkan properti yang dijelaskan di atas, sementara masih dapat diukur. Memang, jaringan dapat mencakup tanpa masalah lebih dari ratusan juta dokumen dan ratusan ribu node. Batas sebenarnya tidak diketahui.
Perpustakaan ini memberi kekuatan pada mesin pencari IPFS ADMARUS.
Semuanya dimulai dari pendekatan yang paling naif, bahwa saya telah mengoptimalkan maksimal. Bayangkan jaringan teman sebaya setiap dokumen penyimpanan (dokumen ini dapat direplikasi pada banyak rekan jika mereka populer). Ketika rekan ingin mencari dokumen, itu mengirimkan kueri untuk setiap rekan di jaringan. Ini berhenti bekerja ketika ada terlalu banyak teman sebaya, karena jaringan dibanjiri dengan pertanyaan.
Untuk menyelesaikan ini, saya menambahkan algoritma routing yang memungkinkan pencari untuk merutekan kueri hanya untuk rekan -rekan yang memiliki dokumen yang cocok. Berkat ini, pertanyaan melewati semua rekan yang tidak berguna. Sekarang, Anda dapat mengunduh daftar dokumen yang cocok dengan kecepatan konstan terlepas dari kueri. Kecepatan pencarian tergantung pada ukuran jaringan. Hasil baru diterima setiap h hop, di mana h = ln(n)/ln(c) dengan n jumlah rekan dan c jumlah koneksi yang dimiliki masing -masing rekan ke orang lain. Ini sangat bagus untuk lebih dari h ketika c 100, jaringan perlu memiliki lebih dari satu juta teman sebaya. Hasil kemudian dapat diperingkat secara bebas berdasarkan metadata yang mereka termasuk.
Algoritma routing Kamilata didasarkan pada filter mekar yang dilemahkan. Filter Bloom adalah struktur data kompak yang digunakan untuk menentukan apakah elemen ada dalam satu set. Di sini, kami memeriksa keberadaan kata -kata dalam dokumen. Dari sudut pandang node, jaringan Kamilata dibagi menjadi grup node virtual dengan berbagai ukuran. Ini membagi korpus menjadi beberapa set mulai dari beberapa dokumen hingga semua dokumen korpus. Masing -masing memiliki filter mekar yang sesuai, maka mudah untuk menemukan kata -kata di jaringan dan tahu node mana yang akan diminta untuk kata -kata yang diberikan.