Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.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
在内存中运行Solr?_Solr - Fatal编程技术网

在内存中运行Solr?

在内存中运行Solr?,solr,Solr,一天晚上,我在当地一家酒吧喝了一品脱酒,然后和我旁边的小伙子聊了起来。事实证明,他不仅是一名开发人员,而且还经常使用Solr。当我们开始谈论索尔有多棒的时候,他提到了一件我一直没弄明白的事情。他说:“让Solr真正发挥作用的方法是让它在内存中运行。” 唉,我不知道他的名字,尽管我在谷歌上搜索答案,但我从未真正找到任何具体的答案。你认为他这是什么意思?在内存中运行SOLR真的毫无意义。SOLR是一个Web服务器,客户端可以在其中使用不间断的api进行查询。您可以设置复制以补偿高流量。索尔包裹着卢森

一天晚上,我在当地一家酒吧喝了一品脱酒,然后和我旁边的小伙子聊了起来。事实证明,他不仅是一名开发人员,而且还经常使用Solr。当我们开始谈论索尔有多棒的时候,他提到了一件我一直没弄明白的事情。他说:“让Solr真正发挥作用的方法是让它在内存中运行。”


唉,我不知道他的名字,尽管我在谷歌上搜索答案,但我从未真正找到任何具体的答案。你认为他这是什么意思?

在内存中运行SOLR真的毫无意义。SOLR是一个Web服务器,客户端可以在其中使用不间断的api进行查询。您可以设置复制以补偿高流量。索尔包裹着卢森。如果您想在内存中运行SOLR,那么基本上就是在内存中运行Lucene。因此,我建议只启动Lucene的一个实例,并将磁盘放在内存中。我很想知道别人是怎么想的,但在内存中运行SOLR并不是有意的。有了Lucene,在内存中实现了一个名为


前一段时间也有一个类似的问题,关于运行SOLR嵌入式模式,但过了一段时间,Apache不赞成使用嵌入式服务器,因为这正是Lucene的用意

对于希望加快测试速度的人:

如果测试索引有单独的核心,则可以将
solrconfig.xml
中的
directoryFactory
属性更改为:


不用说,只在内存中保存任何生产数据不是一个好主意。

虽然速度是运行RAMDirectory的好理由,但最终必须将该目录持久化到磁盘。您可能可以编写一个简单的包装器,而不是包装一个RAMDirectory和FSDirectory,并将调用镜像到两者。所有查询都将来自RAMDirectory,但更改将应用于两者


但这样做的另一个很好的理由是在静止状态下进行加密。如果你真的想使用数据,加密数据就很糟糕,因为你必须支付解密的开销来查询数据。在静止状态下使用加密数据是不实际的,但是如果您将内容解密到内存中并缓存它,那么速度会非常快。

他可能指的是有足够的磁盘缓存来保存整个索引。这是一种广泛推荐的确保快速小随机IO读取(以及索引时的批量写入)的方法,这对于良好的Solr性能至关重要:


对于额外RAM成本相对较低的较小索引,这是一个很好的建议。随着指数的增长,可能最好投资更多的时间尺度测试和其他硬件设置的实验,SSD是一种明显的可能性。

有趣的是,我刚刚想到了同样的想法,虽然有点醉了:-DI仍然希望看到这个问题的答案,所以在开发过程中,我们可以将solr API与lucene这样的内存实现结合使用(我不关心impl,只要它能工作)。就像MySql可以在内存中存储表和索引一样。作为一个服务器与您存储数据的位置无关。我100%需要一个在SolrAPI后面运行的内存。在开发中,我们使用PlayOrm,它为我们的开发运行一个内存中的nosql存储(因此,当我们重新启动服务器时,它会被清除掉数据…完美)。我们希望能够像使用SolrAPI一样使用它,而不需要做大量的翻译工作来适应lucenefaster@bcoughlan问题不在于运行测试。它与在生产环境中运行应用程序有关。如果你觉得你有一个更好的答案,那么可以自由添加一个答案。只有在答案不正确的情况下,否决投票才是合理的。@AmirRaminfar在内存中运行SOLR有一些有效的用例。例如,如果您希望有一个使用SOLR libs的临时搜索索引。使用Lucene可以很容易地做到这一点,但是如果在多个节点上进行分布式搜索,那么在与两者集成时会很麻烦。如果您想知道为什么要有一个临时索引,请考虑一个永远不想永久写入磁盘的敏感动态数据集。当然还有其他的解决方案,但是一个基于RAMDirectory的SOLR是实现这一点的一种方法。