仅从 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 条记录的主要内容,如果未能解决你的问题,请参考以下文章

急急急,在线等!solr4.10结合oracle增量导入数据问题!

solr 学习之数据导入

Solr 索引花费的时间太长

Solr dataimport 动态更改数据源

将 solr 1.4 索引升级到 solr 3.3?

JAVAEE——宜立方商城07:Linux上搭建Solr服务数据库导入索引库搜索功能的实现