在Solr中更新易失数据的策略是什么?想象一下,如果您需要在Solr索引中对YouTube视频数据进行建模:如何在不更新Solr的情况下保持“视图”数据的新鲜度?
我认为将“视图”数据存储在更好处理快速更新的不同数据存储(类似MongoDB或Redis)中将是最好的主意。
但是,使用该数据定期更新索引的最佳方法是什么?在这种情况下,delta-import会有意义吗?在运行查询的性能方面,delta-import对Solr做了什么?
答案 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
这有一些限制,因此您需要根据需要进行检查。