仅从 mdb 索引导入 Solr 数据前 10 条记录
Posted
技术标签:
【中文标题】仅从 mdb 索引导入 Solr 数据前 10 条记录【英文标题】:Solr dataimport from mdb index only first 10 records 【发布时间】:2014-09-26 14:50:30 【问题描述】:我有 mdb 数据库文件,我尝试将它导入到 Solr。数据库文件有 6000 多条记录,但它在 Solr 中只索引了 10 条记录:
索引已完成。添加/更新:10 个文件。删除了 0 个文档。 (时长:03s)
日志输出只是警告:
9/26/2014 4:36:52 PM
WARN
ManagedResource
No stored data found for /rest/managed
9/26/2014 4:36:52 PM
WARN
ManagedResource
No stored data found for /rest/managed
9/26/2014 4:36:52 PM
WARN
ManagedResource
No registered observers for /rest/managed
9/26/2014 4:36:52 PM
WARN
ManagedResource
No registered observers for /rest/managed
9/26/2014 4:37:07 PM
WARN
Index
unsupported collating sort order SortOrder[1025(0)] for text index, making read-only
9/26/2014 4:37:08 PM
WARN
Index
unsupported collating sort order SortOrder[1025(0)] for text index, making read-only
9/26/2014 4:37:10 PM
WARN
Index
unsupported data type BINARY for index, making read-only
我在 solrconfig.xml 中使用以下内容:
<requestHandler name="/dataimport" class="solr.DataImportHandler">
<lst name="defaults">
<str name="config">C:\solr-4.9.0\example\solr\fox\conf\data-config.xml</str>
</lst>
</requestHandler>
这在 data-config.xml 中:
<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
<dataSource driver="net.ucanaccess.jdbc.UcanaccessDriver" type="JdbcDataSource" url="jdbc:ucanaccess://C:/feqh/main.mdb;memory=false" />
<document>
<entity name="Book"
query="select bkid AS id, bkid AS BookID,bk AS BookTitle from 0bok">
<field column="id" name="id"/>
<field column="BookID" name="BookID"/>
<field column="BookTitle" name="BookTitle"/>
</entity>
</document>
</dataConfig>
我使用 UCanAccess 驱动程序,因为我有 Java8 并且不支持 jdbc-odbc 驱动程序(sun.jdbc.odbc.JdbcOdbcDriver)我认为这可能是由于内存限制所以我设置memory=false
让它写在磁盘。有什么解决办法或建议吗?
【问题讨论】:
尝试设置一个小的独立 Java 应用程序,该应用程序通过 UCanAccess 连接到 .mdb 文件,执行 SQL 查询,并通过 ResultSet 循环计算行数。这样您就可以确认 UCanAccess 是否真的可以“看到”超过 10 条记录。 (之前有报道称,由于 Access 文件元数据中的一些细微损坏,UCanAccess 无法查看表中的所有行。在 Access 中对 .mdb 文件执行压缩和修复通常足以解决问题。 ) @GordThompson 为了采纳您的建议,我安装了几年前的旧版 Microsoft Office(Office 2000),我尝试使用 Access 2000 打开文件,我发现Access 2000 告诉我 mdb 文件是在旧版本中创建的,它告诉我将其转换为当前版本!在 Access 之前,我使用 MDB Viewer Plus 打开了这个文件,我发现 Access 显示的列比它显示的多。现在 Access 2000 不能转换文件。有什么建议吗? 如何触发导入?可能通过管理 GUI?如果是这样,您是否清除了“开始,行”中的值?这是一个常见的错误:) @cheffe 哦,是的,伙计!!! :) 但是这些值被禁用了,如果我在当前的生活中添加了另一个生活,我将无法弄清楚这一点!现在,如何取消此查询的开始和结束? @GordThompson 关于这个问题的好消息:因为 2.0.9 UCanAccess 可以识别损坏问题并读取所有记录。 【参考方案1】:从 2.0.9 版本开始,即使文件“损坏”,UcanAccess 也可以读取所有记录(我的意思是,表的元数据中是否有错误的行号)。 此外,在这种损坏中,它会打印一个警告,确认您的数据库已损坏并建议使用修复工具。 因此,为了验证您的问题是否是由于元数据的“损坏”,您只需升级您的 UCanAccess 版本,然后查看日志。
【讨论】:
以上是关于仅从 mdb 索引导入 Solr 数据前 10 条记录的主要内容,如果未能解决你的问题,请参考以下文章