點對點搜索引擎系統
該項目是作為Kamilata協議庫的實現。 Kamilata可以在開放網絡中啟用無信任的搜索。該庫可以處理任何類型的數據,並可以輕鬆地集成到您的LIBP2P應用程序中。
幾種用例是可能的:
排名算法取決於您,因為此庫只會為您提供一系列無序的搜索結果。根據您在這些結果中包含的元數據,您可以根據需要對它們進行排名。
Kamilata是世界上第一個提供上述屬性的系統,同時仍然可擴展。實際上,網絡可以包含超過數億個文檔和數十萬個節點的問題。實際限制未知。
該庫為Admarus IPFS搜索引擎提供動力。
這一切都始於最天真的方法,我已將其優化至最大值。想像一下,每個存儲文檔的同行網絡(如果這些文檔很受歡迎,可以在多個同行中復制)。當同伴想要搜索文檔時,它會將查詢發送給網絡中的每個同伴。當同行太多時,這停止工作,因為網絡充滿了查詢。
為了解決此問題,我添加了一個路由算法,該算法允許搜索者僅將查詢路由到具有匹配文檔的同行。因此,查詢跳過所有無用的同行。現在,無論查詢如何,您都可以以恆定的速度下載匹配文檔列表。搜索速度取決於網絡的大小。每個h啤酒花都會收到新的結果,其中h = ln(n)/ln(c) , n的同行數量和c每個對等的連接數量。這是非常好的,因為當c為100時, h蜜蜂超過3,網絡需要擁有超過一百萬的同行。然後可以根據其中包括的元數據自由排名結果。
Kamilata路由算法基於衰減的Bloom過濾器。 Bloom過濾器是用於確定集合中是否存在元素的緊湊數據結構。在這裡,我們檢查文檔中單詞的存在。從節點的角度來看,Kamilata網絡分為不同大小的虛擬節點組。這將語料庫劃分為從幾個文檔到語料庫的所有文檔的多組。每個都有其相應的綻放過濾器,然後很容易在網絡中找到單詞,並知道要查詢給定單詞的節點。