首页 文章

使用solr索引维基百科

提问于
浏览
1

我've installed solr 4.6.0 and follow the tutorial available at Solr'的主页 . 一切都很好,直到我需要做一份我即将做的真正的工作 . 我必须快速访问维基百科内容,我被建议使用Solr . 好吧,我试图按照链接http://wiki.apache.org/solr/DataImportHandler#Example:_Indexing_wikipedia中的示例,但我无法知道data_config.xml是什么意思!

<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提供指示的建议都会很好 .

2 回答

  • 2
    • 对于data_config.xml

    每个Solr实例都使用三个主文件配置:solr.xml,solrconfig.xml,schema.xml和data_config.xml文件在您使用DIH组件时定义数据源,此URL对您有用:DIH .

    • 关于Solr主目录

    你应该从这里开始:https://cwiki.apache.org/confluence/display/solr/Running+Solr

  • 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" />
    

    这是我的data-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"/>
    ...
    

    它已经完成了 . 这就是所有人!

相关问题