【问题标题】:How to know when Solr Optimize is done?如何知道 Solr Optimize 何时完成?
【发布时间】:2010-09-17 10:29:28
【问题描述】:
我正在使用 Solr-php-client 通过 php 与 Solr 进行通信。
这段代码触发了solr优化命令:
$solr->optimize();
不知道有没有什么方法可以确定优化完成了?
这都是因为我的网站上有一个管理页面,我每天手动一次必须优化 Solr 索引,但我很难编写这段代码。
目前我有一个带有提交按钮的简单表单,它触发了 optimize() 命令,但我必须以某种方式确认优化已经发生,这就是这里的问题。
您知道在 Solr 中确认优化的任何方法吗?
谢谢
【问题讨论】:
标签:
java
php
html
database
solr
【解决方案1】:
Optimize 命令的documentation 指定,默认情况下,该命令将阻塞,直到所有更改都写入磁盘并且新搜索器可用。因此,如果您保留这些默认值,则当命令返回时,您可以认为优化已完成。请注意,根据您当前拥有的段数以及您想要下降到的段数,该命令可能会阻塞很长时间。我已经看到优化需要一个小时才能完成。
【解决方案2】:
最简单的方法是从 Solr 控制台开始优化,您的集合的概览部分中有一个“立即优化”按钮。如果刷新此屏幕,您将看到已使用的内存不断增长,直到翻倍,然后勾选优化状态并且“立即优化”按钮消失。
注意:您必须有足够的可用磁盘空间才能完成优化,否则它将失败,不会发出通知或错误消息。
这并不能直接回答您的问题,但这是处理 solr 实例优化的另一种方法。所以我希望它会有所帮助。