Perl 为SOLR中的连续文档流编制索引

Perl 为SOLR中的连续文档流编制索引,perl,indexing,solr,Perl,Indexing,Solr,我需要将数千个文档连续索引到SOLR中。 文档从类似redis的队列SSDB中提取,然后索引到SOLR中 每当我使用库函数$solr->add时,都会对solr进行一个新的HTTP调用。是否有更好的机制将批量项目索引到SOLR中 您应该考虑以下几点: 首先,我建议将从队列中提取数据并将其索引到Solr的过程解耦。我的意思是,有一个进程可以从队列中提取数据,正确地处理数据并写出solr json文件。该文件应具有多个记录;数量将由每个记录的大小和每个批次中的项目总数决定。玩不同的设置 然后让另一个

我需要将数千个文档连续索引到SOLR中。 文档从类似redis的队列SSDB中提取,然后索引到SOLR中


每当我使用库函数$solr->add时,都会对solr进行一个新的HTTP调用。是否有更好的机制将批量项目索引到SOLR中

您应该考虑以下几点:

首先,我建议将从队列中提取数据并将其索引到Solr的过程解耦。我的意思是,有一个进程可以从队列中提取数据,正确地处理数据并写出solr json文件。该文件应具有多个记录;数量将由每个记录的大小和每个批次中的项目总数决定。玩不同的设置

然后让另一个进程索引这些文件,您也可以让多个进程将这些文件索引到Solr中。这将确保您的解队列过程不会挂起到Solr的索引项上;这并不总是很快

其次;评估您选择的库。如果数据位于Solr服务器的本地,则可以通过GET请求传递路径以对其进行索引,也可以通过网络对其进行流式传输。第一种方法会更快,但是它要求您在Solr框上本地存储JSON

最后,回顾你的承诺策略。什么样的延误是可以接受的?您是否进行了大量的面处理或FQ查询?如果你的第二个问题的答案是肯定的,那么我建议你进行一次非常积极的硬承诺和放松的软承诺。如果您需要很快地拾取新的项目,那么在测试性能之前考虑降低软提交,直到找到一个良好的平衡。p>
希望这有帮助

您使用哪个Perl模块与Solr对话?如果您同时收到多个文档,您可以在一个HTTP请求中添加它们,或者您可以延迟添加,直到收到x个文档。提交通常是更新过程中代价高昂的一部分,因此延长提交时间或发布提交之前的时间也会有所帮助。你现在怎么做加法?新文件多久到达一次?您希望文档以多快的速度显示?你看过Solr的NRT功能了吗?有多个进程似乎更复杂,我已经有了一个将这些文档生成到Redis队列SSDB的进程,实际上Solr总是在同一个LAN中。我在SOLR中的项目不会立即提取,因此提交总是会延迟