gpt4 book ai didi

Solr 核心的 numDocs 不等于已处理文档的总和

转载 作者:行者123 更新时间:2023-12-04 12:32:32 25 4
gpt4 key购买 nike

我在构建 Solr 索引(Apache Tomcat 6.0.33 上的 Lucene 和 Solr 3.4.0)时遇到问题。

要编制索引的文档数据来自 Oracle 数据库。由于我必须处理大量的 CLOB,我将数据导入分成几个请求处理程序以提高性能,同时从数据库中获取数据(多线程模拟)。这些 requestHandlers 在我的 solrconfig.xml 中配置如下:

<requestHandler name="/segment-#" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">segment-#.xml</str>
</lst>
</requestHandler>

为了构建索引,我启动了带有 clean=true 选项的第一个 DataImportHandler,然后启动了所有其他段的完全导入。当所有段都通过时,状态页面 ( http://host/solr/segment-# ) 告诉我,对于每个段,正确的行数(根据数据库中的 SELECT COUNT(*) 语句)被提取和处理。到目前为止还不错。

但是如果我现在调用核心的状态页面 (http://host/solr/admin/core),则 numDocs 不是所有段的总和。总是缺少一些文件。我尝试了几次索引构建,差异总是不同的。总而言之,索引中应该有 830 万个文档,但实际上总是迂回地缺少 100.000 个条目。 numDocs 与我可以通过 Solr 管理界面使用 *:* 查询找到的编号相同。

我打开了信息流,查看了日志条目,还有 Tomcat 日志,但没有找到任何线索。我做错了什么?

我正在使用 17 个 requestHandlers,我的 配置如下:

<useCompoundFile>false</useCompoundFile>
<mergeFactor>17</mergeFactor>
<ramBufferSizeMB>32</ramBufferSizeMB>
<maxBufferedDocs>50000</maxBufferedDocs>
<maxFieldLength>2000000</maxFieldLength>
<writeLockTimeout>1000</writeLockTimeout>
<commitLockTimeout>10000</commitLockTimeout>
<lockType>native</lockType>

非常感谢您的帮助。非常感谢您!

最佳答案

我发现了问题,只需要 RTFM...我自欺欺人,因为默认的清理选项是 TRUE,我以为它是 FALSE。所以我只是用 &clean=true 调用第一个 URL,而不是用 &clean=false 调用所有其他 URL。所以每个 URL 调用都会导致清理整个索引。如果我用 &clean=false 调用 URL,则所有文档的总和都是正确的。

关于Solr 核心的 numDocs 不等于已处理文档的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8489590/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com