2013-12-09 53 views
1

我已經安裝了solr 4.6.0並按照Solr主頁上提供的教程進行操作。一切都很好,直到我需要做一件我即將要做的工作。我必須快速訪問wikipedia內容,並建議我使用Solr。那麼,我試圖按照鏈接http://wiki.apache.org/solr/DataImportHandler#Example:_Indexing_wikipedia中的示例,但我無法獲得該示例。我是新手,我不知道什麼意思data_config.xml!使用solr索引維基百科

<dataConfig> 
     <dataSource type="FileDataSource" encoding="UTF-8" /> 
     <document> 
     <entity name="page" 
       processor="XPathEntityProcessor" 
       stream="true" 
       forEach="/mediawiki/page/" 
       url="/data/enwiki-20130102-pages-articles.xml" 
       transformer="RegexTransformer,DateFormatTransformer" 
       > 
      <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> 

我在Solr主目錄中找不到。另外,我試圖找到一些與我的相關的問題,How to index wikipedia files in .xml format into solrIndexing wikipedia dump with solr,但他們沒有解決我的疑問。

我想我需要更基本的東西,一步一步地指導我,因爲在處理維基百科索引時教程很混亂。

任何建議給予folow一些方向將是很好的。

回答

1

好吧,我讀過網絡上很多東西,並試圖收集儘可能多的信息越好。這是我能找到的解決辦法:

這裏是我的solrconfig.xml中:

... 
    <!-- ****** Data import handler --> 
    <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> 
    <lst name="defaults"> 
     <str name="config">data-config.xml</str> 
    </lst> 
    </requestHandler> 
... 
    <lib dir="../../../dist/" regex="solr-dataimporthandler-.*\.jar" /> 

這裏是我的數據-config.xml中:(重要的是:它必須是solrconfig.xml中的同一個文件夾)

<dataConfig> 
     <dataSource type="FileDataSource" encoding="UTF-8" /> 
     <document> 
     <entity name="page" 
       processor="XPathEntityProcessor" 
       stream="true" 
       forEach="/mediawiki/page/" 
       url="/Applications/solr-4.6.0/example/exampledocs/simplewikiSubSet.xml" 
       transformer="RegexTransformer,DateFormatTransformer" 
       > 
      <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> 

注意:最後一行非常重要!

我的schema.xml:

... 
    <field name="id"  type="string" 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"/> 
... 

它完成。這就是所有人!

+0

嗨@mar​​celo,謝謝你這個美好的回答。不過,我做了完全相同的事情,但仍無法查看索引的文檔。你可以看看我的問題:http://stackoverflow.com/questions/31566401/how-to-configure-solr-dataimport-handler-to-parse-wikipedia-xml-document – Tanny

+0

@marcelo - 我也是面臨同樣的問題。它並不索引所有的字段。請幫助我一樣 - http://stackoverflow.com/questions/32628350/solr-dataimporthandler-is-not-indexing-all-data-defined – virus