我知道如何在一台机器上开发一个简单的倒排索引。简而言之,它是一个保存在内存中的标准哈希表,其中: - 关键 - 一个字 - value - 单词位置列表 例如,代码位于:http://rosettacode.org/wiki/Inverted_Index#Java
问题:
现在我试图让它分布在n个节点中,然后依次:
我特别感兴趣的是自动分片。欢迎任何想法或链接!
感谢。
答案 0 :(得分:0)
自我整理是一项相当复杂的任务,在现代数据库中尚未完全解决。分布式数据库中的典型问题是CAP theorem,以及其他一些低级且非常具有挑战性的任务,例如在添加新的空白节点后或在数据中自然发生的不平衡之后重新平衡群集数据。
在我见过的DB中实现的最佳数据分发是在Cassandra。但是,Cassandra尚未实现全文搜索,因此您可以考虑在其上构建分布式索引。
其他一些已经实施的选项是Elasticsearch和SolrCloud。在给出的示例中,缺少一个重要的细节,这是一个词干。用词来源你基本上搜索任何形式的单词,如“唱歌”,“唱歌”,“歌手”。 Lucene以及之前的两个解决方案已针对大多数语言实施。