在Solr中更新易失性数据有哪些策略?

时间:2011-09-22 18:43:42

标签: solr data-modeling

在Solr中更新易失数据的策略是什么?想象一下,如果您需要在Solr索引中对YouTube视频数据进行建模:如何在不更新Solr的情况下保持“视图”数据的新鲜度?

我认为将“视图”数据存储在更好处理快速更新的不同数据存储(类似MongoDB或Redis)中将是最好的主意。

但是,使用该数据定期更新索引的最佳方法是什么?在这种情况下,delta-import会有意义吗?在运行查询的性能方面,delta-import对Solr做了什么?

3 个答案:

答案 0 :(得分:1)

首先,您需要定义“新鲜”。

“新鲜”1毫秒?如果是这样,当值(呈现的html)到达浏览器时,由于网络延迟,它不再是新鲜的。这真的很重要吗?对于绝大多数情况,不需要,不需要真正的实时结果。

更常见的限制是1秒。在这种情况下,Solr可以使用RankingAlgorithm(插件)或soft commits处理(目前仅在Solr 4.0中继线中提供)。

“Delta-import”是来自DataImportHandler的术语,它没有太多内在含义。从Solr服务器的角度来看,只有文档添加,它们来自何处或者一组文档是否代表“整个”数据集无关紧要。

如果你想让一个项目在其创建/修改的1s内被索引,那么就这样做,在创建/修改之后将它添加到Solr(例如在DAL中使用钩子)。这应该是异步完成的,并使用RA或软提交。

答案 1 :(得分:0)

您可能对Solr的主干上现在可用的所谓“近实时搜索”或NRT感兴趣,该主干旨在解决此问题。有关详细信息和链接,请参阅http://wiki.apache.org/solr/NearRealtimeSearch

答案 2 :(得分:0)

使用外部文件字段怎么样?
这有助于您将索引之外的数据保存在单独的文件中,您可以定期刷新,而无需对索引进行任何更改。

对于诸如下载,视图,排名等快速变化数据的数据,这可能是一个不错的选择 更多信息@ http://lucene.apache.org/solr/api/org/apache/solr/schema/ExternalFileField.html

这有一些限制,因此您需要根据需要进行检查。