نظام محرك بحث نظير إلى نظير
هذا المشروع هو تطبيق كمكتبة لبروتوكول Kamilata. تتيح Kamilata البحث غير الموثوق في الشبكات المفتوحة. يمكن لهذه المكتبة التعامل مع أي نوع من البيانات ، ويمكن دمجها بسهولة في تطبيق libp2p الخاص بك.
هناك العديد من حالات الاستخدام الممكنة:
خوارزمية الترتيب متروك لك ، لأن هذه المكتبة ستوفر لك فقط دفقًا من نتائج البحث غير المرتبة. استنادًا إلى البيانات الوصفية التي تدرجها في هذه النتائج ، يمكنك تصنيفها كما تريد.
Kamilata هو أول نظام في العالم يقدم الخصائص الموضحة أعلاه ، بينما لا يزال قابلاً للتطوير. في الواقع ، يمكن أن تشمل الشبكة دون مشاكل أكثر من مئات الملايين المستندات ومئات الآلاف من العقد. الحد الفعلي غير معروف.
تعمل هذه المكتبة على تشغيل محرك بحث Admarus IPFS.
كل شيء يبدأ من النهج الأكثر سذاجة ، والتي قمت بتحسينها إلى الحد الأقصى. تخيل شبكة من أقرانها كل مستندات تخزين (يمكن تكرار هذه المستندات على أقران متعددين إذا كانت شائعة). عندما يريد النظير البحث عن مستند ، فإنه يرسل استعلامًا إلى كل نظير في الشبكة. هذا يتوقف عن العمل عندما يكون هناك الكثير من الأقران ، لأن الشبكة تغمرها الاستعلامات.
لحل هذا ، أضفت خوارزمية توجيه تسمح للباحث بتوجيه الاستعلامات فقط إلى أقرانهم الذين لديهم مستندات مطابقة. بفضل هذا ، تخطي الاستعلامات جميع أقرانهم عديمة الفائدة. الآن ، يمكنك تنزيل قائمة المستندات المطابقة بسرعة ثابتة بغض النظر عن الاستعلام. تعتمد سرعة البحث على حجم الشبكة. يتم استلام نتائج جديدة في كل قفزات h ، حيث h = ln(n)/ln(c) مع n عدد الأقران و c عدد الاتصالات التي لدى كل نظير للآخرين. هذا أمر جيد جدًا بالنسبة لـ h Beeing أكثر من 3 عندما تكون c 100 ، تحتاج الشبكة إلى أكثر من مليون أقران. يمكن بعد ذلك تصنيف النتائج بحرية بناءً على البيانات الوصفية التي تشملها.
تعتمد خوارزمية توجيه Kamilata على مرشحات الإزهار المخففة. مرشحات Bloom هي هياكل بيانات مضغوطة تستخدم لتحديد ما إذا كان هناك عنصر في مجموعة. هنا ، نتحقق من وجود الكلمات في المستندات. من وجهة نظر العقدة ، تنقسم شبكة Kamilata إلى مجموعات عقدة افتراضية ذات أحجام مختلفة. هذا يقسم المجموعة إلى مجموعات متعددة تتراوح من عدد قليل من المستندات إلى جميع مستندات المجموعة. كل منها له مرشح بلوم المقابل ، من السهل تحديد موقع الكلمات في الشبكة ومعرفة العقد التي يجب الاستعلام عنها للكلمات المعطاة.