要求:
我正在给一个建立Solr索引的程序添加一个功能,这个系统是多线程的,所以每次都会以随机的顺序创建搜索条目。Solr索引还需要分成多个文件,因为如果用户尝试上传一个大文件,服务器可能会耗尽内存。
问题是:
为了保持系统的可靠性并使事情变得更容易,生成的Solr索引文件需要是相同的,无论它们是以什么顺序处理的。索引需要在文件之间平衡(或足够接近平衡),并且具有最大数量的条目。如果文件超出了最大条目数,则需要拆分。这些文件也将在运行时更新,因此条目将被添加、删除和更改。
所需条件:
我正在寻找一种能够满足这些要求的算法。我想我需要某种类型的B-tree,但我不知道有什么B-tree的变体可以满足这组特定的需求。
有没有算法或数据结构可以帮助满足这些需求?
发布于 2017-10-21 01:51:52
根据内容使用UUID。要拆分文件,请根据UUID所在的范围将每个项目发送到存储桶中。无论你得到项目的顺序是什么,这将可靠地将其发送到大小相对均匀的存储桶中,并且唯一索引将保证结果相同。
有关更详细的建议,请参阅https://wiki.apache.org/solr/UniqueKey;有关其他有用的提示,请参阅https://wiki.apache.org/solr/LargeIndexes。
https://stackoverflow.com/questions/46854512
复制相似问题