0

我们不时重新索引整个数据库。通常需要几个小时。然而,只有最新的出现在首页。所以我在想,如果我向后重新索引数据库,也就是说,首先以“id desc”顺序重新索引记录,我可以大大减少服务器停机时间。

但是,从性能的角度来看,这样可以吗?它会对搜索时间产生负面影响吗?

4

2 回答 2

2

既然您说您正在执行完整的重新索引,我建议您在不同的核心中建立索引并进行交换。这个答案提供了一些关于如何实现这一点的参考。

在我们的设置中,我们有一个 Master/Slave 设置,其中索引发生在 Master 上,索引被复制到 Slave。从属服务于搜索请求。从性能的角度来看,这很有效。

您可能需要考虑的另一件事 - 尝试看看为什么您的索引时间会长达数小时。在我们的例子中,我们意识到 DataImportHandler 中的嵌套查询是罪魁祸首,触发了 n+1 个 jdbc 连接。我们通过创建视图对其进行了优化,我们的索引时间从 3 小时缩短到了不到 2 分钟!

于 2013-03-20T16:22:54.837 回答
1

为什么你有停机时间?

如果您只在最后提交,您只会在提交时仅在最后显示记录(并且顺序无关紧要)。

如果您正在使用 maxDocs/maxTime 集(Solr 4+)进行软提交并从最新记录中重新索引,那么您几乎会立即看到这些记录,而其他记录最终会出现。

我建议阅读一些关于提交语义的内容,看看是否会让事情变得更清楚。

于 2013-03-20T16:52:51.990 回答