2014-09-26 107 views
1

我有mdb数据库文件,我尝试将它导入到Solr。数据库文件有超过6000条记录,但它只索引Solr中的10条记录:从mdb索引Solr dataimport只有前10条记录

索引完成。新增/更新:10个文件。删除了0个文件。 (持续时间:03秒)

的日志输出才刚刚警告:

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> 

而这数据 - 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让它写在磁盘上。有什么解决方案或建议吗?

+0

尝试设置一个小的独立Java应用程序,该应用程序通过UCanAccess连接到.mdb文件,执行SQL查询并循环遍历ResultSet来计数行。通过这种方式,您可以确认UCanAccess是否可以实际“查看”超过10条记录。 (之前有报道称,由于Access文件的元数据中存在一些细微的损坏,UCanAccess无法查看表中的所有行。对Access中的.mdb文件执行压缩和修复通常足以解决问题。 ) – 2014-09-26 15:28:41

+0

@GordThompson为了应用您的建议,我安装了几年前(Office 2000)的旧版Microsoft Office,并试图使用Access 2000打开该文件,并且我发现Access 2000告诉我mdb文件是在旧版本中创建的,它告诉我将其转换为当前版本!在Access之前,我使用MDB Viewer Plus打开了这个文件,我发现Access显示的列数多于它显示的数量。现在Access 2000不能转换文件。有什么建议吗? – SaidbakR 2014-09-26 17:40:02

+2

你如何触发导入?可能通过管理GUI?如果是这样,你是否清除了“开始,行”中的值?这是一个常见的错误:) – cheffe 2014-09-26 17:59:55

回答

0

自2.0.9版本以来,即使文件“损坏”(我的意思是表格元数据中是否有错误的行号),UcanAccess也可以读取所有记录。 此外,在这种腐败中,它会打印一条警告,确认您的数据库已损坏,并建议使用修复工具。 因此,为了验证您的问题是否由于元数据的“损坏”,您只需升级您的UCanAccess版本,然后查看日志。