点对点搜索引擎系统
该项目是作为Kamilata协议库的实现。 Kamilata可以在开放网络中启用无信任的搜索。该库可以处理任何类型的数据,并可以轻松地集成到您的LIBP2P应用程序中。
几种用例是可能的:
排名算法取决于您,因为此库只会为您提供一系列无序的搜索结果。根据您在这些结果中包含的元数据,您可以根据需要对它们进行排名。
Kamilata是世界上第一个提供上述属性的系统,同时仍然可扩展。实际上,网络可以包含超过数亿个文档和数十万个节点的问题。实际限制未知。
该库为Admarus IPFS搜索引擎提供动力。
这一切都始于最天真的方法,我已将其优化至最大值。想象一下,每个存储文档的同行网络(如果这些文档很受欢迎,可以在多个同行中复制)。当同伴想要搜索文档时,它会将查询发送给网络中的每个同伴。当同行太多时,这停止工作,因为网络充满了查询。
为了解决此问题,我添加了一个路由算法,该算法允许搜索者仅将查询路由到具有匹配文档的同行。因此,查询跳过所有无用的同行。现在,无论查询如何,您都可以以恒定的速度下载匹配文档列表。搜索速度取决于网络的大小。每个h啤酒花都会收到新的结果,其中h = ln(n)/ln(c) , n的同行数量和c每个对等的连接数量。这是非常好的,因为当c为100时, h蜜蜂超过3,网络需要拥有超过一百万的同行。然后可以根据其中包括的元数据自由排名结果。
Kamilata路由算法基于衰减的Bloom过滤器。 Bloom过滤器是用于确定集合中是否存在元素的紧凑数据结构。在这里,我们检查文档中单词的存在。从节点的角度来看,Kamilata网络分为不同大小的虚拟节点组。这将语料库划分为从几个文档到语料库的所有文档的多组。每个都有其相应的绽放过滤器,然后很容易在网络中找到单词,并知道要查询给定单词的节点。