2012-04-05 6 views
2

sqliteデータベースの一括インポートを実行するようにsolrを説得しようとしています。 私はSolr-Wikiのすべての指示に従います。 私が正常にJDBCを介してそのデータベースをオープンするDataImportHandlerを構成し、私は輸入http://localhost:8080/solr/dataimport?command=full-import を開始することができますが、何でも私は、DIHは結果にそれがインデックス見えてもDBDataImportHandlerが追加/更新できません

<str name="command">full-import</str> 

<str name="Total Requests made to DataSource">1</str> 
<str name="Total Rows Fetched">**14**</str> 
<str name="Total Documents Skipped">0</str> 
<str name="Full Dump Started">2012-04-06 01:14:30</str> 
<str name="">**Indexing completed**. **Added/Updated: 0 documents**. Deleted 0 documents.</str> 
<str name="Committed">2012-04-06 01:14:32</str> 
<str name="Optimized">2012-04-06 01:14:32</str> 
<str name="Total Documents Processed">0</str> 
を任意のドキュメントを追加しませんでした

私は、Oracle DB

データ-config.xmlにemp表を使用し

<dataConfig> 
<dataSource name="jdbc" driver="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@//localhost:1521/ORCL" user="scott" password="tiger"/> 
<document> 
<entity name="emp" query="select EMPNO, ENAME from EMP"> 
      <field column="EMPNO" name="empno" /> 
      <field column="ENAME" name="ename" /> 
</entity> 
</document> 
</dataConfig> 

のschema.xml

<field name="empno" type="int" indexed="true" stored="true"/> 
<field name="ename" type="string" indexed="true" stored="true"/> 

それがインデックスしていないようではなく、保存されたインデックスを付けたデータ

この問題が起こる理由を任意のアイデアか?

EDIT 1この警告メッセージがログ

2012. 4. 6 오후 12:12:25 org.apache.solr.update.processor.LogUpdateProcessor finish 
INFO: {deleteByQuery=*:*,add=[(null), (null), (null), (null), (null), (null), (null), (null), ... (14 adds)],optimize=} 0 0 

Iの終わりを示し

WARNING: Error creating document : SolrInputDocument[{ename=ename(1.0)={SMITH}, empno=empno(1.0)={7369}}] 
org.apache.solr.common.SolrException: [doc=null] missing required field: id 
    at org.apache.solr.update.DocumentBuilder.toDocument(DocumentBuilder.java:346) 
    at org.apache.solr.update.processor.RunUpdateProcessor.processAdd(RunUpdateProcessorFactory.java:60) 
    at org.apache.solr.update.processor.LogUpdateProcessor.processAdd(LogUpdateProcessorFactory.java:115) 
    at org.apache.solr.handler.dataimport.SolrWriter.upload(SolrWriter.java:73) 
    at org.apache.solr.handler.dataimport.DataImportHandler$1.upload(DataImportHandler.java:293) 
    at org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:636) 
    at org.apache.solr.handler.dataimport.DocBuilder.doFullDump(DocBuilder.java:268) 
    at org.apache.solr.handler.dataimport.DocBuilder.execute(DocBuilder.java:187) 
    at org.apache.solr.handler.dataimport.DataImporter.doFullImport(DataImporter.java:359) 
    at org.apache.solr.handler.dataimport.DataImporter.runCmd(DataImporter.java:427) 
    at org.apache.solr.handler.dataimport.DataImporter$1.run(DataImporter.java:408) 

ログのようなものが続くと

ログを表示する警告メッセージのような..思考欠けている必須フィールド:id関係がありますSolrの構成で重度のエラー - のschema.xml

<uniqueKey>id</uniqueKey> 

で時間設定が、削除した後、私はこのメッセージ

HTTPステータス500を得ました。何が間違っているかについての詳細な情報は、ログファイルを確認してください。構成エラーのあとでsolrを続行する場合は、次のように変更します。solr.xmlでfalse --------------------------------- ---------------------------- org.apache.solr.common.SolrException:QueryElevationComponentでは、StrField atを使用してuniqueKeyFieldが実装されている必要があります。 org.apache.solr.handler.component.QueryElevationComponent.inform(QueryElevationComponent.java:158)at org.apache.solr.core.SolrResourceLoader.inform

アドバイスはありますか?

+0

チェックログを自動インクリメントIDを追加することができます。それ以外の場合は、DataImportHandler開発コンソールの冗長出力を使用して何が起こるかを確認します。 –

+0

ありがとう!私はログメッセージを受け取りましたが、それを修正する方法はまだ分かりませんでした。何かアドバイス? – John

+0

私は答えを得た。 、schema.xmlの、およびを、solrconfig.xmlのsearchComponent name = elevatorに削除します。どうも!! – John

答えて

3

試してみてください。のschema.xmlで

<uniqueKey>id</uniqueKey>  

と、フィールドIDを聞かせて:

データ-config.xmlの
<entity name="emp" query="select EMPNO, ENAME from EMP"> 
     <field column="EMPNO" name="id" /> 
     <field column="ENAME" name="ename" />  

と戻します。

またはUは、単純に置き換えることができます。

<uniqueKey>id</uniqueKey>  

をして:

<uniqueKey>epno</uniqueKey>   

働くことを願っています。

+0

thx !!それは私に洞察力を与えた – John

1

またDIHは、エラーがスローされますかどうかを確認するために

<dataConfig> 
<script><![CDATA[ 
    id = 1; 
    function GenerateId(row) { 
     row.put('id', (id ++).toFixed()); 
     return row; 
    } 
    ]]></script> 
<dataSource name="jdbc" driver="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@//localhost:1521/ORCL" user="scott" password="tiger"/> 
<document> 
<entity name="emp" query="select EMPNO, ENAME from EMP" transformer="script:GenerateId"> 
     <field column="EMPNO" name="empno" /> 
     <field column="ENAME" name="ename" /> 
     </entity> 
</document> 
</dataConfig> 
+0

私のためにたくさんの人の仕事です。 –

関連する問題