Agi*_*Pro 11 lucene solr transactions consistency cluster-computing
我是Solr的新手.我正在尝试创建一个将结构化数据存储在数据库中的服务器,并且可以使用Solr/Lucene进行搜索.服务器可以集群到任意数量的相同节点中以实现高可用性.
似乎标准配置Solr将索引存储在文件系统上的文件中.这似乎引入了一致性和聚类的一些问题.
如何使索引在事务上与DB保持一致?有没有办法做到这一点?(例如,通过提交Solr索引协调提交到DB的某种方式?)
有没有办法将索引存储在(关系)数据库中?这将解决一致性问题和集群问题,但我没有找到很多关于如何做到这一点的文献.
配置为群集时,每个群集节点是否需要维护自己的索引副本.目前尚不清楚Solr的多个实例是否可以更新单个索引.
或者 - 我们是否放弃接受索引不保证一致,每天重建它?人们通常对此做些什么?
min*_*das 17
问>如何使索引在事务上与DB保持一致?
A>你不能.您可以在顶部创建另一个事务层,但开发需要很长时间,无论如何您都不会达到100%的一致性.例如,您可以将数据发送到DB和Solr,并且只在两个数据到达后才提交,但这不是原子的.
问:有没有办法将索引存储在(关系)数据库中?
A>使用Lucene 4.0,您可能(通过编写自己的编解码器).但这不会解决你的问题.
问:当配置为集群时,每个集群节点是否需要维护它自己的索引副本?
A>是的.
问:目前尚不清楚Solr的多个实例是否可以更新单个索引.
A>多个Lucene/Solr实例无法写入相同的索引文件.你可以做的最多就是创建多个IndexSearchers.但无论如何,这可能是在Solr级别完成的.
问:我们是否放弃接受索引不能保证一致?
A>是的.我认为你太以数据库为中心了.想想Solr/Lucene,你会想到谷歌 - 我敢打赌他们不会在全世界原子地推出他们的整个指数.如果搜索结果会有轻微的不一致性,具体取决于您点击的服务器(当然只有几秒钟),这不是什么大问题.
Q >每天都在重建它?人们通常对此做些什么?
A> Lucene有近实时搜索,但在基本级别,您只需发送索引更新并在db更改发生时提交,然后重新打开索引阅读器以查看这些更新.这一切都在Solr中自动完成.
| 归档时间: |
|
| 查看次数: |
3516 次 |
| 最近记录: |