How to configure solr dataimport handler to parse wikipedia xml document?

房东的猫 提交于 2019-12-13 04:32:21

问题


So this is what I have done so far.

I have added a request handler in solrconfig.xml as follows:

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

In the same configuration directory I have created a file wiki-data-config.xml which contains the following,

<dataConfig>
    <dataSource type="FileDataSource" encoding="UTF-8" />
    <document>
        <entity name="page"
                pk="id"
                processor="XPathEntityProcessor"
                stream="true"
                forEach="/mediawiki/page/"
                url="/home/tanny/Downloads/Data/Wiki/enwiki-20150702-stub-articles8.xml"
                flatten="true" >
            <field column="id"        xpath="/mediawiki/page/id" />
            <field column="title"     xpath="/mediawiki/page/title" />
            <field column="revision"  xpath="/mediawiki/page/revision/id" />
            <field column="user"      xpath="/mediawiki/page/revision/contributor/username" />
            <field column="userId"    xpath="/mediawiki/page/revision/contributor/id" />
            <field column="text"      xpath="/mediawiki/page/revision/text" />
            <field column="timestamp" xpath="/mediawiki/page/revision/timestamp" dateTimeFormat="yyyy-MM-dd'T'hh:mm:ss'Z'" />
            <field column="$skipDoc"  regex="^#REDIRECT .*" replaceWith="true" sourceColName="text"/>
       </entity>
    </document>
</dataconfig>

And my schema.xml contains the following,

<!-- Tanny edit starts -->

<field name="id"        type="int"  indexed="true" stored="true" required="true"/>
<field name="title"     type="string"  indexed="true" stored="false"/>
<field name="revision"  type="int"    indexed="true" stored="true"/>
<field name="user"      type="string"  indexed="true" stored="true"/>
<field name="userId"    type="int"     indexed="true" stored="true"/>
<field name="text"      type="text_en"    indexed="true" stored="false"/>
<field name="timestamp" type="date"    indexed="true" stored="true"/>
<field name="titleText" type="text_en"    indexed="true" stored="true"/>
<uniqueKey>id</uniqueKey>
<copyField source="title" dest="titleText"/>

<!-- Tanny edit ends -->

Now after restarting the SOLR, I try to post the WikiMedia XML Data using the ./bin/post script in the following way,

tanny@localhost:~/binaries/solr-5.2.1$ ./bin/post -c core-base-wiki /home/tanny/Downloads/Data/Wiki/enwiki-20150702-stub-articles8.xml

And it prints the following in the console

/usr/lib/jvm/java-7-oracle-cloudera//bin/java -classpath /home/tanny/binaries/solr-5.2.1/dist/solr-core-5.2.1.jar -Dauto=yes -Dc=core-base-wiki -Ddata=files org.apache.solr.util.SimplePostTool /home/tanny/Downloads/Data/Wiki/enwiki-20150702-stub-articles8.xml
SimplePostTool version 5.0.0
Posting files to [base] url http://localhost:8983/solr/core-base-wiki/update...
Entering auto mode. File endings considered are xml,json,csv,pdf,doc,docx,ppt,pptx,xls,xlsx,odt,odp,ods,ott,otp,ots,rtf,htm,html,txt,log
POSTing file enwiki-20150702-stub-articles8.xml (application/xml) to [base]
1 files indexed.
COMMITting Solr index changes to http://localhost:8983/solr/core-base-wiki/update...
Time spent: 0:00:00.863

However, when I go to the UI and check for the overview it says 0 documents indexed. I am at a loss to understand what configuration I am missing out on. Any help/guidance will be higly appreciated.

P.S.: The dataset enwiki-20150702-stub-articles8.xml is downloaded from WikiMedia Page. Few sample lines from the document are mentioned as follows,

<mediawiki xmlns="http://www.mediawiki.org/xml/export-0.10/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mediawiki.org/xml/export-0.10/ http://www.mediawiki.org/xml/export-0.10.xsd" version="0.10" xml:lang="en">
  <siteinfo>
    <sitename>Wikipedia</sitename>
    <dbname>enwiki</dbname>
    <base>https://en.wikipedia.org/wiki/Main_Page</base>
    <generator>MediaWiki 1.26wmf11</generator>
    <case>first-letter</case>
    <namespaces>
      <namespace key="-2" case="first-letter">Media</namespace>
      <namespace key="829" case="first-letter">Module talk</namespace>
      ...
      ...
      <namespace key="2600" case="first-letter">Topic</namespace>
    </namespaces>
  </siteinfo>
  <page>
    <title>700 (number)</title>
    <ns>0</ns>
    <id>465001</id>
    <revision>
      <id>663854862</id>
      <parentid>655386821</parentid>
      <timestamp>2015-05-24T21:01:24Z</timestamp>
      <contributor>
        <username>Cnwilliams</username>
        <id>10190671</id>
      </contributor>
      <comment>Disambiguated: [[Tintin]] → [[The Adventures of Tintin]]</comment>
      <model>wikitext</model>
      <format>text/x-wiki</format>
      <text id="669059875" bytes="12464" />
      <sha1>q15fslnvlsrgbeo8f6mcyrg00l2d2a5</sha1>
    </revision>
  </page>
  <page>
    <title>Canadian federal election, 1957</title>
    <ns>0</ns>
    <id>465004</id>
    <revision>
      <id>666418811</id>
      <parentid>666417048</parentid>
      <timestamp>2015-06-11T01:38:05Z</timestamp>
      <contributor>
        <username>Wehwalt</username>
        <id>458237</id>
      </contributor>
      <comment>/* Impact */ clarify</comment>
      <model>wikitext</model>
      <format>text/x-wiki</format>
      <text id="671713242" bytes="77788" />
      <sha1>05g14m9sfavo7buuirpr8lx4c6vfwee</sha1>
    </revision>
  </page>
  ...
  ...
  <page>
    <title>Professional Players Tournament (snooker)</title>
    <ns>0</ns>
    <id>665001</id>
    <redirect title="World Open (snooker)" />
    <revision>
      <id>359952698</id>
      <parentid>25566787</parentid>
      <timestamp>2010-05-03T23:48:34Z</timestamp>
      <contributor>
        <username>Xqbot</username>
        <id>8066546</id>
      </contributor>
      <minor/>
      <comment>Robot: Fixing double redirect to [[World Open (snooker)]]</comment>
      <model>wikitext</model>
      <format>text/x-wiki</format>
      <text id="360810125" bytes="34" />
      <sha1>lxtjwcda9vk58fphj8ie2logjm607mv</sha1>
    </revision>
  </page>
</mediawiki>

回答1:


The data got indexed after I tried to ingest using the command: "curl http://localhost:8983/solr/core-base-wiki/dataimport?command=full-import".

Somehow the ./bin/post was not able to do the same. Didn't research more on the same, if anyone else has figured out how to, you are requested to share your findings.




回答2:


You're missing lib element in solrconfig.xml.

<lib dir="../../../dist" regex="solr-dataimporthandler-.*\.jar" />


来源:https://stackoverflow.com/questions/31566401/how-to-configure-solr-dataimport-handler-to-parse-wikipedia-xml-document

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!