Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Full text search 开发分布式全文搜索索引(也称为反向索引)_Full Text Search_Scalability_Sharding_Full Text Indexing_Inverted Index - Fatal编程技术网

Full text search 开发分布式全文搜索索引(也称为反向索引)

Full text search 开发分布式全文搜索索引(也称为反向索引),full-text-search,scalability,sharding,full-text-indexing,inverted-index,Full Text Search,Scalability,Sharding,Full Text Indexing,Inverted Index,我知道如何在一台机器上开发一个简单的反向索引。简而言之,它是保存在内存中的标准哈希表,其中: -关键词 -值-单词位置的列表 例如,代码如下所示: 问题: 现在,我尝试将其分布在n个节点中,然后依次: 使此索引水平可伸缩 对此索引应用自动分片 我对自动切分特别感兴趣。欢迎任何想法或链接 谢谢。it本身的分片是一项相当复杂的任务,在现代DBs中还没有完全解决。分布式DBs中的典型问题是,在添加新的空白节点后或在数据中自然出现不平衡后,重新平衡集群数据,以及其他一些低级别且极具挑战性的任务 在我见过

我知道如何在一台机器上开发一个简单的反向索引。简而言之,它是保存在内存中的标准哈希表,其中: -关键词 -值-单词位置的列表 例如,代码如下所示:

问题:

现在,我尝试将其分布在n个节点中,然后依次:

  • 使此索引水平可伸缩
  • 对此索引应用自动分片
  • 我对自动切分特别感兴趣。欢迎任何想法或链接


    谢谢。

    it本身的分片是一项相当复杂的任务,在现代DBs中还没有完全解决。分布式DBs中的典型问题是,在添加新的空白节点后或在数据中自然出现不平衡后,重新平衡集群数据,以及其他一些低级别且极具挑战性的任务

    在我见过的数据库中实现的最好的数据分发是在Cassandra中。然而,在CASANDRA中尚未实现全文搜索,因此您可以考虑在其上构建分布式索引。
    其他一些已经实施的选项包括和。在给出的示例中,缺少一个重要的细节,即词干分析。有了词干,你基本上可以搜索任何形式的单词,比如“sing”、“sings”、“singer”。以前的两种解决方案已经在大多数语言中实现。

    谢谢您的回答。我找到了Cassandra和其他一些DBs的比较,并在以下位置再次遇到了一致的散列算法:事实上,之前我研究了这个算法,在我的博客中描述了这个算法:我认为这个算法也可以应用于反向索引。我想倒排索引的键可以传递到一致的散列数据结构中。更正:如果我将倒排索引与一致散列相结合,我还想听到其他方法和陷阱。最简单的形式是NoSQL DB与基于散列的键可以被视为一个巨大的散列图。是的,您可以简单地将反向索引键传递给DB。