0

RSS インポーターを追加したい既存のコレクションがあります。example-DIH/solr/rss コードから、私が光り輝くものをコピーしました。

詳細は以下のとおりですが、要点は、すべてが実行されているように見えますが、常に「フェッチ済み: 0」と表示されます (ドキュメントが取得されません)。tomcat ログに例外はありません。

質問:

  • RSS インポーターのデバッグを有効にする方法はありますか?
  • solr の実際のリクエストとレスポンスを見ることはできますか?
  • リクエストは成功するが、行がフェッチされない原因は何ですか?
  • RSS DIH を既存のコレクションに追加するためのチュートリアルはありますか?

ありがとう!

私の solrconfig.xml ファイルには requestHandler が含まれています。

<requestHandler name="/dataimport"
    class="org.apache.solr.handler.dataimport.DataImportHandler">
    <lst name="defaults">
            <str name="config">rss-data-config.xml</str>
    </lst>
</requestHandler>

および rss-data-config.xml:

<dataConfig>
    <dataSource type="URLDataSource" />
    <document>
        <entity name="slashdot"
                pk="link"
                url="http://rss.slashdot.org/Slashdot/slashdot"
                processor="XPathEntityProcessor"
                forEach="/rss/channel | /rss/item"
                transformer="DateFormatTransformer">

            <field column="source_name" xpath="/rss/channel/title" commonField="true" />

            <field column="title" xpath="/rss/item/title" />
            <field column="link" xpath="/rss/item/link" />
            <field column="body" xpath="/rss/item/description" />
            <field column="date" xpath="/rss/item/date" dateTimeFormat="yyyy-MM-dd'T'HH:mm:ss" />
        </entity>
    </document>
</dataConfig>

そしてschema.xmlから:

<fields>
   <field name="title" type="text_general" required="true" indexed="true" stored="true"/>
   <field name="link" type="string" required="true" indexed="true" stored="true"/>
   <field name="source_name" type="text_general" required="true" indexed="true" stored="true"/>
   <field name="body" type="text_general" required="false" indexed="false" stored="true"/>
   <field name="date" type="date" required="true" indexed="true" stored="true" />
   <field name="text" type="text_general" indexed="true" stored="false" multiValued="true"/>
   <field name="_version_" type="long" indexed="true" stored="true"/>
<fields>

管理 Web ページから dataimport を実行すると、すべてうまくいくようです。「Requests: 1」と表示され、Tomcat ログに例外はありません。

Mar 12, 2013 9:02:58 PM org.apache.solr.handler.dataimport.DataImporter maybeReloadConfiguration
INFO: Loading DIH Configuration: rss-data-config.xml
Mar 12, 2013 9:02:58 PM org.apache.solr.handler.dataimport.DataImporter loadDataConfig
INFO: Data Configuration loaded successfully
Mar 12, 2013 9:02:58 PM org.apache.solr.handler.dataimport.DataImporter doFullImport
INFO: Starting Full Import
Mar 12, 2013 9:02:58 PM org.apache.solr.handler.dataimport.SimplePropertiesWriter readIndexerProperties
INFO: Read dataimport.properties
Mar 12, 2013 9:02:59 PM org.apache.solr.handler.dataimport.DocBuilder execute
INFO: Time taken = 0:0:0.693
Mar 12, 2013 9:02:59 PM org.apache.solr.update.processor.LogUpdateProcessor finish
INFO: [articles] webapp=/solr path=/dataimport params={optimize=false&clean=false&indent=true&commit=false&verbose=true&entity=slashdot&command=full-import&debug=true&wt=json} {} 0 706
4

4 に答える 4

0

ここでの問題は、rss-data-config.xmlと定義されたxpathが原因です。

InternetExplorerでURL ​​http://rss.slashdot.org/Slashdot/slashdotを開き、開発者ツールのF12キーを押すと、HTMLの構造が表示されます。

<item>ノードがの子で<channel>あり、ではないことがわかります<rss>。したがって、構成は次のようになります。

<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
<dataSource type="URLDataSource" />
<document>
<entity name="slashdot"
            pk="link"
            url="http://rss.slashdot.org/Slashdot/slashdot"
            processor="XPathEntityProcessor"
            forEach="/rss/channel | /rss/channel/item"
            transformer="DateFormatTransformer">

        <field column="source_name" xpath="/rss/channel/title" commonField="true" />

        <field column="title" xpath="/rss/channel/item/title" />
        <field column="link" xpath="/rss/channel/item/link" />
        <field column="body" xpath="/rss/channel/item/description" />
        <field column="date" xpath="/rss/channel/item/date" dateTimeFormat="yyyy-MM-dd'T'HH:mm:ss" />
    </entity>
</document>
</dataConfig>
于 2013-03-15T04:47:50.450 に答える