Algorithm 基于分布式数据库的对等搜索引擎构建算法

Algorithm 基于分布式数据库的对等搜索引擎构建算法,algorithm,data-structures,p2p,distributed-system,dht,Algorithm,Data Structures,P2p,Distributed System,Dht,我正在寻找建立一个分布式torrent搜索引擎 我知道在对等网络中用于寻址节点的分布式哈希表。但我不完全理解每个节点是如何获得全局唯一ID的 不过,我不确定构建分布式数据库需要什么算法和数据结构。显然,它需要高度冗余,并且尽可能高效地进行搜索 我真正需要的是指向某些资源的指针,最好是一些代码示例 但我不完全理解每个节点是如何获得全局唯一ID的 我要说的是,这与问题的标题和具体实现无关。 但一般来说,它要么是随机完成的,要么是基于它们的公共IP+一些随机子部分的散列,然后对子网进行一些调整。以bi

我正在寻找建立一个分布式torrent搜索引擎

我知道在对等网络中用于寻址节点的分布式哈希表。但我不完全理解每个节点是如何获得全局唯一ID的

不过,我不确定构建分布式数据库需要什么算法和数据结构。显然,它需要高度冗余,并且尽可能高效地进行搜索

我真正需要的是指向某些资源的指针,最好是一些代码示例

但我不完全理解每个节点是如何获得全局唯一ID的

我要说的是,这与问题的标题和具体实现无关。 但一般来说,它要么是随机完成的,要么是基于它们的公共IP+一些随机子部分的散列,然后对子网进行一些调整。以bittorrent为例

不过,我不确定构建分布式数据库需要什么算法和数据结构

这是一个非同寻常的话题,我认为不可能在几个段落内回答。DHT在其基础上不允许枚举存储值或任何由多个节点协调的复杂操作,它们所做的只是直接查找键值。 要在上面实现关键字搜索,您必须做一些算法和语言处理练习,并为基本DHT协议添加扩展以适应这些要求

以下是需要解决的几个问题的不完整列表:

  • 不均匀的字分布使DHT密钥空间的某些部分比其他部分承受更多的负载-这可以通过节点自身移动、目标地址故障切换或扩大负责目标密钥的节点集在某种程度上得到缓解。简单地扔掉一些非常普通的词
  • 对多个搜索词执行并集或交集操作-在某种程度上,这可以通过bloom过滤器完成
  • 将没有空格的脚本分割成搜索词——这一问题也必须由lucene等非分布式索引引擎来解决。afaik使用N-grams
  • 防止包含特定单词的流行内容淹没共享该单词的所有其他结果
  • 信任。i、 e.防止关键字垃圾邮件攻击
我不确定DHT在这里是否是正确的方法。我模糊地回忆起基于语言/关键字本身的其他指标,其中节点在键空间中移动,以吸引正在使用的单词,从而提供必要的网络容量


我建议点击google scholar,查找与关键字搜索相关的修改或DHT的替代覆盖。

哪个DHT?Bittorrent主线DHT aka?阿祖留斯有自己的DHT。除了infohash之外,他们都不能“搜索”。分布式搜索算法是一个非常复杂的正在进行的研究课题,获取唯一的ID是其中最简单的一个,只需使用UUID-对于问题的其余部分,请先阅读一些关于该主题的论文。谢谢,我希望有人能为我指出一些研究论文的方向。@harold我还没有决定使用什么类型的DHT。我知道DHT本身无法进行搜索。@TomBusby好的,你看过Tribler的工作原理了吗?他们有一些好论文。这对我很有用。我给你打勾。