我有一个分类广告网站。用户可以投放广告、编辑广告、查看广告等。
每当用户投放广告时,我都会向Solr添加一个文档。然而,我不知道什么时候提交它。提交会让我读到的东西慢下来。
我怎么发动汽车呢?每隔12小时左右自动提交一次?
另外,我应该如何使用optimize呢?
发布于 2010-01-27 01:49:34
实际上,经常提交和优化会让事情变得很慢。太重了。
经过一天的搜索和阅读,我发现了这个:
1- Optimize导致索引在优化时大小翻倍,并使事情变得非常慢。
2-每次添加后提交并不是一个好主意,最好是一天提交几次,然后一天最多只优化一次。
3- Commit应该在solrconfig.xml文件中设置为"autoCommit“,并且应该根据您的需要进行调整。
发布于 2010-09-18 02:32:10
关于提交/优化的更多细节:
Commit:当您将文档索引到solr时,您所做的任何更改都不会出现,直到您运行commit命令。因此,何时运行commit命令的时间实际上取决于您希望更改通过搜索引擎出现在站点上的速度。然而,这是一个繁重的操作,所以应该分批完成,而不是在每次更新之后。
优化:这类似于硬盘上的碎片整理命令。它会将索引重新组织成片段(提高搜索速度),并删除任何已删除(替换)的文档。Solr是一个只读数据存储,所以每次您索引文档时,它都会将旧文档标记为已删除,然后创建一个全新的文档来替换已删除的文档。优化将删除这些已删除的文档。您可以通过转到Solr Statistics页面并查看numDocs与maxDocs数字来查看搜索文档与已删除文档的数量。这两个数字之间的差异在于索引中删除的(不可搜索的)文档的数量。
此外,Optimize从旧的索引构建一个全新的索引,然后在完成时切换到新的索引。因此,该命令需要双倍的空间来执行操作。因此,您需要确保索引的大小不超过可用硬盘空间的%50。(这是一个经验法则,由于删除的文档,通常需要少于%50 )
索引服务器/搜索服务器: Paul Brown是对的,solr的最佳设计是拥有一个专门用于索引的服务器,然后将更改复制到搜索服务器。您可以将索引服务器调优为具有多个索引端点。
eg: http://solrindex01/index1; http://solrindex01/index2由于索引服务器不搜索内容,因此您可以为其设置不同的内存占用和索引预热命令等。
希望这是对每个人有用的信息。
发布于 2010-07-12 15:11:15
这类操作通常是在用户请求路径之外的Solr节点上执行提交/优化操作。这需要额外的硬件,但它可以确保索引操作的性能损失不会影响您的用户。复制用于定期将优化的索引文件从主节点传送到为用户执行搜索查询的节点。
https://stackoverflow.com/questions/2137607
复制相似问题