Apache SolrをMaven2から実行する

Posted on 2011-08-02 by takezoux2

1. はじめに

1.1 Apache Solrとは

Apache SolrとはApacheプロジェクトのJavaで書かれた全文検索エンジンです。全文検索機能を実装したApache Luceneの上に、Webインターフェイスやらクラスタリング機能やら色々な機能を追加したアプリケーションになります。

1.2 なぜMaven2?

SubversionやGitなどを使って複数人でソース共有するときに、全ての依存したJarを登録しちゃうとSolrの開発に関係ない人も20MB以上のjarをDLすることになり捗らないよね?
しかも、ちょっと拡張したい時も依存関係が増えるとその管理めんどくさいよね?
ということでMaven使ってHappyになりましょうというのが今回の記事の趣旨です。
ただし、初期設定はちょっと面倒かも。。。

2. Get Started

2.1 環境

Java,Maven 2.xがすでに準備できていることが前提です。
OSはWindows7で検証していますが、基本JavaなのでUnix系のOSでも問題なく実行できると思います。

2.2 Mavenプロジェクトの作成

まず、以下のコマンドを実行しプロジェクトの作成を行います。

mvn archetype:generate -DgroupId=com.geishatokyo -DartifactId=solrwithmaven -DarchetypeArtifactId=maven-archetype-quickstart

goupId,artifactIdは各自で変更してください。

2.3 pom.xmlの編集

  • packagingをwarに変更
  • 依存関係にSolrの追加
  • buildにJettyサーバーを設定

を行います。packagingは初期はjarに設定されているので、warに変更するだけです。

変更する部分のみ。

   <packaging>war</packaging>
   <dependencies>
        <dependency>
            <groupId>org.apache.solr</groupId>
            <artifactId>solr</artifactId>
            <version>3.3.0</version>
            <type>war</type>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.1.1</version>
                <configuration>
                    <webResources>
                        <resource>
                            <!-- this is relative to the pom.xml directory -->
                            <directory>src/main/resources2</directory>
                        </resource>
                    </webResources>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.mortbay.jetty</groupId>
                <artifactId>maven-jetty-plugin</artifactId>
                <version>6.1.25</version>
                <configuration>
                    <systemProperties>
                        <systemProperty>
                            <name>solr.solr.home</name>
                            <value>target/${artifactId}-${version}/solr</value>
                        </systemProperty>
                    </systemProperties>
                </configuration>
            </plugin>
        </plugins>
    </build>

2.4 必要なコンフィグファイルのコピー

/src/main/resources2/solr/confフォルダを作成し、そこに必要な全てのコンフィグファイルを置いて下さい。
コンフィグファイルは、こちらからDLできるSolrのひな形に含まれているもの(example/solr/conf以下のファイル)をまるまるコピーしてくるのが一番楽です。

また、/src/test/javaフォルダ以下のファイルは今回は必要ないので、削除しておいてください。

3. 実行

    mvn jetty:run-exploded

を実行するだけで起動できます。
起動が完了したら、http://localhost:8080/solrwithmaven/admin/へアクセスしてください。

4. おまけ

4.1 pomの設定ってなに?

maven-war-plugin

サーバーへの配布形式の際に使用するwarファイルへ固める際の設定を少々変更しています。
Solrのsolr.solr.home=./solr/にデフォルトで設定されているので、warにした際にコンフィグファイルがデフォルトのパスに置かれる用にしています。
きちんとした説明はこちらを参考にしてください。

maven-jetty-plugin

軽量Servletコンテナです。これを設定しておくと、簡単にWebアプリケーションを起動できます。
また、通常時にはコンフィグファイルがコピーされる場所がSolrのデフォルトHomeと違うため、その設定を上書きして変更しています。


Tags

Tips maven