首页 文章

使用SQL Server的Solr DataImportHandler

提问于
浏览
10

我在让Solr通过Microsoft JDBC Driver与Microsoft SQL Server交谈时遇到问题 . 我在solrconfig.xml中注册了处理程序:

<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
  <lst name="defaults">
    <str name="config">C:\Program Files\Apache Software Foundation\Tomcat 6.0\Solr\conf\data-config.xml</str>
  </lst>
</requestHandler>

在data-config.xml中,我有一个数据源和一个定义的文档:

<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
  <dataSource type="JdbcDataSource" name="ds1"
    driver="com.microsoft.sqlserver.jdbc.SQLServerDriver" 
    url="jdbc:sqlserver://localhost;databaseName=myDB;responseBuffering=adaptive;"
    user="xxxx"
    password="xxxx"
    readOnly="true"
  />

  <document name="members">
    <entity name="member" datasource="ds1" pk="id"
      query = "select 
        MemberID as id,
        UserName as userName,
        FirstName as firstName,
        LastName as lastName,
        Birthday as birthday,
        PrimaryEmail as primaryEmail,
        PersonalStatement as personalStatement
        from member"
      transformer="DateFormatTransformer">
      <field column="Birthday" name="birthday" dateTimeFormat="yyyy-MM-dd" />
    </entity>      
  </document>
</dataConfig>

列是相当无关紧要的 - 我只是想从一些项目开始,包括日期列 . Solr schema.xml定义了一些字段:

<field name="id" type="tlong" indexed="true" stored="true" required="true" /> 
<field name="userName" type="text" indexed="true" stored="true" />
<field name="firstName" type="text" indexed="true" stored="true" />
<field name="lastName" type="text" indexed="true" stored="true" />
<field name="birthday" type="tdate" indexed="true" stored="true" />
<field name="primaryEmail" type="text" indexed="true" stored="true" />
<field name="personalStatement" type="text" indexed="true" stored="true" />

当我尝试导入时,日志显示构建数据源的异常:

Jun 26,2010 10:24:48 PM org.apache.solr.handler.dataimport.DataImporter doFullImport INFO:开始完全导入2010年6月26日下午10:24:48 org.apache.solr.core.SolrCore执行INFO: [] webapp = / solr path = / select params = {clean = false&commit = true&command = full-import&qt = / dataimport} status = 0 QTime = 7 Jun 26,2010 10:24:48 PM org.apache.solr.handler . dataimport.SolrWriter readIndexerProperties警告:无法读取:dataimport.properties 2010年6月26日下午10:24:48 org.apache.solr.handler.dataimport.DataImporter doFullImport SEVERE:完全导入失败org.apache.solr.handler.dataimport . DataImportHandlerException:No dataSource:null可用于实体:成员在org.apache.solr.handler.dataimport.ContextImpl.getDataSource的org.apache.solr.handler.dataimport.DataImporter.getDataSourceInstance(DataImporter.java:279)处理文档#1 (ContextImpl.java:93)位于org.apache.solr.handler.dataimport.Enti的org.apache.solr.handler.dataimport.SqlEntityProcessor.init(SqlEntityProcessor.java:52) org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:319)中的tyProcessorWrapper.init(EntityProcessorWrapper.java:71)位于org.apache.solr.handler.dataimport.DocBuilder.doFullDump(DocBuilder.java: 242)org.apache.solr.handler.dataimport.DocBuilder.execute(DocBuilder.java:180)atg.apache.solr.handler.dataimport.DataImporter.doFullImport(DataImporter.java:331)org.apache.solr .handler.dataimport.DataImporter.runCmd(DataImporter.java:389)at org.apache.solr.handler.dataimport.DataImporter $ 1.run(DataImporter.java:370)2010年6月26日10:24:48 org.apache .solr.update.DirectUpdateHandler2 rollback INFO:start rollback 2010年6月26日下午10:24:48 org.apache.solr.update.DirectUpdateHandler2 rollback INFO:end_rollback 2010年6月26日10:24:54 org.apache.solr . core.SolrCore执行INFO:[] webapp = / solr path = / select params = {clean = false&commit = true&command = status&qt = / dataimport} status = 0 QTime = 0

我已经阅读了常见问题解答和文档,查看了我能找到的尽可能多的来源,而且我无法理解这个错误 . 我究竟做错了什么?每次配置出现任何问题时,都会显示错误“无法读取:dataimport.properties” . 我找不到我的错误 .

1 回答

  • 9

    似乎在实体声明中无法识别数据源,因为要使用的正确属性是 dataSource ,而不是 datasource

相关问题