gpt4 book ai didi

sqlite - DataImportHandler 未报告错误但未完成

转载 作者:行者123 更新时间:2023-12-02 00:47:41 24 4
gpt4 key购买 nike

我试图说服 solr 执行 sqlite 数据库的批量导入。我将 DataImportHandler 配置为通过 jdbc 成功打开该数据库,并且可以使用 wget http://localhost:8080/solr/dataimport?command=full-import 开始导入但无论我做什么,solr 似乎只索引前 499 个文档(如 wget http://localhost:8080/solr/dataimport?command=status 报告)。

jetty 日志文件没有报告任何错误消息。相反,它报告索引结束:

27-Jan-2012 19:08:13 org.apache.solr.handler.dataimport.SolrWriter readIndexerProperties
INFO: Read dataimport.properties
27-Jan-2012 19:08:13 org.apache.solr.handler.dataimport.SolrWriter persist
INFO: Wrote last indexed time to dataimport.properties
27-Jan-2012 19:08:13 org.apache.solr.handler.dataimport.DocBuilder execute
INFO: Time taken = 0:0:1.145

我可能做错了什么?

最佳答案

我知道回答自己的问题不是很好,但我最终发现了导致此错误的令人讨厌的问题。

用于为特定数据源配置 solr 的指令是这样的:

<dataSource type="JdbcDataSource" driver="org.sqlite.JDBC" url="jdbc:sqlite:/foo.db"/>

默认情况下,JdbcDataSource 类读取此 XML 节点的 batchSize 属性,并假设它设置为 500,除非指定。所以,上面实际上相当于:

<dataSource type="JdbcDataSource" ... batchSize="500"/>

现在,JdbcDataSource 将batchSize 传递给底层JDBC 驱动程序(在本例中为sqlite jdbc 驱动程序)的setFetchSize 方法。该驱动程序假定该方法实际上要求它限制返回的行数,因此在这种情况下永远不会返回超过 500 行。我对 JDBC API 的预期语义还不够熟悉,无法判断是否是 sqlite 驱动程序在解释该值的方式上出现了错误,或者是否是 solr JdbcDataSource 类在它认为驱动程序的方式上出现了错误对此方法调用使用react。

不过,我所知道的是,修复方法是指定batchSize =“0”,因为sqlite jdbc驱动程序假定值为零意味着:“未指定行限制”。我将此提示添加到相应的 solr FAQ 页面。

关于sqlite - DataImportHandler 未报告错误但未完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9037990/

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