2012-05-28 22 views
0

我有一个datbase列包含xml,我想索引使用该列中的apache solr内容我有以下data-config.xml(配置)。数据库名称是“solrdb”,列名称是“xmlfield”,其中似乎存在一些问题,错误在底部指定。任何人配置apache solr FieldReaderDataSource?

<dataConfig> 
     <!--Data source to connect to database--> 
     <dataSource 
      name="XmlDocDS" 
      type="JdbcDataSource" 
      driver="com.mysql.jdbc.Driver" 
      url="jdbc:mysql://127.0.0.1/solrdb" 
      user="root" 
      password="root" /> 
     <!-- Data Source for getting xml columne data-->  
     <dataSource 
      name="solrFieldReaderDS" 
      type="FieldReaderDataSource"/> 
     <document> 
      <entity 
       name="xmltable" 
       rootEntity="false" 
       datasource="XmlDocDS" 
       query="select xmlfield from xmltable"> 
       <field column="xmldata" blob="true" /> 
       <entity 
        name="page" 
        dataSource="solrFieldReaderDS" 
        dataField="xmltable.xmldata"     
        processor="XPathEntityProcessor"    
        forEach="/page"> 
        <field column="id" xpath="/mediawiki/page/id"/> 
        <field column="Title" xpath="/mediawiki/page/title"/> 
       </entity> 
      </entity> 
     </document> 
</dataConfig> 

错误是以下几点:

SEVERE: Exception while processing: xmltable document : null:org.apache.solr.handler.dataimport.DataImportHandlerException: Unable to execute query: select xmlfield from xmltable Processing Document # 1 

回答

0

有连接错误,由于某种原因它无法连接到我的本地机器,我改变了数据库主机,它连接! ,问题是,我有配置到位,并FieldReaderDataSource似乎很好地工作,但现在当它完成一切它说,文件索引/更新= 0

这里是我的xml配置

<dataSource 
     name="jdbcDataSource" 
     driver="com.mysql.jdbc.Driver" 
     url="xxxx" 
     user="yyyy" 
     password="zzzz" readOnly="true"/> 

     <dataSource 
      name="solrFieldReaderDS" 
      type="FieldReaderDataSource"/> 
     <document> 
      <entity 
       name="tabledata" 
       dataSource="jdbcDataSource" 
       query="select codeID,codeText from ArticlePoolState where codeID=3"> 
       <entity 
        name="xmldata" 
        dataSource="solrFieldReaderDS" 
        forEach="/med" 
        dataField="tabledata.codeText"    
        processor="XPathEntityProcessor"> 
        <field column="title" xpath="/title"/> 
       </entity> 
      </entity> 
     </document> 

查询很好。

0

该错误是在JDBC进口这部分代码抛出:

try { 
    Connection c = getConnection(); 
    stmt = c.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY); 
    stmt.setFetchSize(batchSize); 
    stmt.setMaxRows(maxRows); 
    LOG.debug("Executing SQL: " + query); 
    long start = System.currentTimeMillis(); 
    if (stmt.execute(query)) { 
     resultSet = stmt.getResultSet(); 
    } 
    LOG.trace("Time taken for sql :" 
      + (System.currentTimeMillis() - start)); 
    colNames = readFieldNames(resultSet.getMetaData()); 
    } catch (Exception e) { 
    wrapAndThrow(SEVERE, e, "Unable to execute query: " + query); 
    } 

所以有可能在连接或查询错误(水木清华错误与DB?)。此外grep日志为“执行SQL”和“SQL占用的时间:”