Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save satom9to5/7902551 to your computer and use it in GitHub Desktop.
Save satom9to5/7902551 to your computer and use it in GitHub Desktop.

Wikipediaデータダウンロード先

http://dumps.wikimedia.org/jawiki/latest/

ダウンロード&解凍

# wget http://dumps.wikimedia.org/jawiki/latest/jawiki-latest-pages-articles-multistream.xml.bz2
# bunzip2 jawiki-lasest-pages-articles.xml.bz2

コレクションディレクトリ作成

# cd /usr/local/solr/{プロジェクト名}/solr

この中の「collection1」ディレクトリがコレクションの本体になる これを任意の名前に変更する 今回はWikipediaのarticleのため、「article」コレクションとする

# mv collection1 article

設定変更

# vi /usr/local/solr/{プロジェクト名}/solr/article/core.properties
name=article

スキーマ設定

# vi /usr/local/solr/{プロジェクト名}/solr/article/conf/schema.xml

articles.xmlの定義に沿ってスキーマを設定

<schema name="example" version="1.5">

  -- 中略 --

 <fields>    
   <field name="_version_" type="long"     indexed="true"  stored="true"/>
   <field name="id"        type="string"   indexed="true"  stored="true" required="true" />
   <field name="title"     type="string"   indexed="true"  stored="true" required="true" />
   <field name="revision"  type="int"      indexed="false" stored="true" />
   <field name="user"      type="string"   indexed="true"  stored="true" />
   <field name="userId"    type="int"      indexed="false" stored="true" />
   <field name="text"      type="text_cjk" indexed="true"  stored="true" required="true" />
   <field name="timestamp" type="date"     indexed="true"  stored="true" default="NOW" multiValued="false"/>
   <field name="titleText" type="text_cjk" indexed="true"  stored="true"/>
 </fields>
 
 <copyField source="title" dest="titleText"/>

 -- 中略 --
 # これ以下にある<copyField>, <dynamicField>の記述は起動時にエラーになるため削除する

</schema>

<fields>は65行目〜250行目当たりにある 一旦すべて削除して必要な記述だけ記載

###メモ ####DynamicField Solr実行時に動的にフィールドの定義を行うもの

####CopyField ドキュメント追加時にsource属性の値をdest属性にコピー

Solr設定

# vi /usr/local/solr/{プロジェクト名}/solr/article/conf/solrconfig.xml

データインポート用の設定を追加

<config>

  -- 中略 --

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

  -- 中略 --

</config>

データインポート設定

# vi /usr/local/solr/{プロジェクト名}/solr/article/conf/wikipedia-article-config.xml

上記solrconfig.xmlで定義したに対応するファイルを新規作成

<dataConfig>
        <dataSource type="FileDataSource" encoding="UTF-8" />
        <document>
        <entity name="page"
                processor="XPathEntityProcessor"
                stream="true"
                forEach="/mediawiki/page/"
                url="{jawiki-laster-pages-atricles.xmlの解凍先パス}/jawiki-latest-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再起動

# /etc/init.d/solr restart

ブラウザからアクセス http://localhost:8983/solr/

左タブの「Core Selector」→上記で指定したコレクション名に移動 「Dataimport」をクリックし、「Execute」をクリック

※エラーが出た際は、左タブ「Logging」の内容を見ながら対処

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment