Tag Archives: Tomcat

[Java]Solr1.4.1をTomcat6へインストール(Windows版)

以前から興味があった全文検索エンジン「Solr」を触ってみる。
この記事ではWindowsへのインストールのみ解説している。

0.前提
Tomcatは、以下のディレクトリにインストールされているものとする。

C:\Program Files\Apache Software Foundation\Tomcat 6.0

1.ダウンロード
以下のURLからダウンロード先を選択し、apache-solr-1.4.1.zipをダウンロード
http://www.apache.org/dyn/closer.cgi/lucene/solr/
※URLによってはSolr1.4.1が無い場合もあるのでよく探す

2.zip解凍
ダウンロードしてきたapache-solr-1.4.1.zipをzip解凍する

3.アプリケーションをTomcatに設置
以下、指定のwarファイルを指定のTomcatディレクトリへ移動する。
・移動するファイル

apache-solr-1.4.1/example/webapps/solr.war

・移動先のTomcatディレクトリ

C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps

4.warファイルを解凍し設定ファイル設置
先ほど設置したsolr.warをzip解凍する。

以下2つのフォルダを解凍したフォルダ内に設置する。
移動するフォルダ

apache-solr-1.4.1\example\solr\bin
apache-solr-1.4.1\example\solr\conf

移動先のフォルダ

C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\solr

5.Tomcatの設定ファイルを作成
Web画面上からSolrアプリケーションが見れるように、
Tomcatの設定ファイルを作成する。

・作成するファイル

C:\Program Files\Apache Software Foundation\Tomcat 6.0\conf\Catalina\localhost\solr.xml

・ファイルの内容

<Context docBase="solr" debug="0" crossContext="true">
	<Environment name="solr/home" type="java.lang.String"
		value="C:/Program Files/Apache Software Foundation/Tomcat 6.0/webapps/solr"
		override="true" />
</Context>

6.Tomcatを起動
Tomcatを起動し、以下のURLへ接続する。

http://localhost:8080/solr/admin

この間にエラーが出たらなんか間違えてるので、
一から読み直すかあきらめてください。

7.参考URL
http://ymotoba.blogspot.com/2008/10/solr.html
※まんま同じ作業を行ないました

[SAStruts]Tomcat起動時に初回のみ呼び出す独自のクラスでデータベース接続

SAStruts(Super Agile Struts)の開発、設定方法に苦戦した。



やりたいことは以下。

1.WebサーバTomcat起動時に独自に作成したクラスを呼び出したい。

2.呼び出したクラス内でデータベースにSELECTを発行し、取得したレコードをメモリに読み込みたい。



1点目の解決法は、customizer.diconにinitializeServiceを設定すれば解決できる。

(customizer.diconへの設定例)
<components>
...(中略)
    <component name="initializeService" class="jp.mikuriya.Init">
        <initMethod name="init">
            <arg>"/home/hoge/sample/property/sys.properties"</arg>
        </initMethod>
    </component>
<components>


(クラスの記述例)
package jp.mikuriya;

import org.seasar.extension.jdbc.JdbcManager;

public class Init {
    public JdbcManager jdbcManager;

    public void init(String propertyFile) {
        /* -------------------- */
        /* 適当な処理内容を記述 */
        /* -------------------- */
        System.out.println("Tomcat起動時に呼ばれたよ。[propertyFile=" + propertyFile + "]");
    }
}

Tomcatを起動すればこれでSystem.outは実行される。


しかし、上記の「クラスの記述例」で記述している「JdbcManager jdbcManager」に注目してもらいたい。

フィールドに設定しておくと、勝手にデータベースに接続してくれる

SAStrutsの特徴であるJdbcManagerが記述されている。

これがどうにも上手くいかない。

うまくいかないとはデータベースに接続できないってこと。



Tomcatのログ(catalina.out)を確認すると、以下のようなメッセージが出力されている。

「...プロパティ(jdbcManager)が見つからないので設定をスキップします」

Tomcatのログをもっと確認してみると、customizer.diconを呼び出しているようなログが

s2jdbc.diconを呼び出しているようなログよりも前の行に表示されている。

ってことは、s2jdbc.diconを呼び出してから、例題のプログラムを起動させればよいと考えた。



そこで先ほどcustomizer.diconに設定していた内容を切り取って、

s2jdbc.diconに追加する。

(s2jdbc.diconへの設定例)
<components>
...(中略)
    <component name="initializeService" class="jp.mikuriya.Init">
        <initMethod name="init">
            <arg>"/home/hoge/sample/property/sys.properties"</arg>
        </initMethod>
    </component>
</components>



これで再度Tomcatのログを確認してみると、s2jdbc.diconを呼び出した後に

System.outが出力されているのがわかる。



他にやり方がありそうなのだが、わかんねぇ。

Javaオープンソース「Nutch」はクロール→インデクシング→検索までいける

Nutchというクローラ、インデクサ、検索を行なうオープンソースがあったので、

軽く触ってみた。

Nutch内部ではLucene、Hadoopが動作してるようなので、勉強にはちょうどいいかと思う。

早速、インストールから動作までの解説をする。



■クローラ

1.Nutch本体ダウンロード、解凍

# tar -xvzf nutch-0.9.tar.gz
# mv nutch-0.9 /usr/local/nutch



2.環境変数にパスを通す

# vi /etc/bashrc

export NUTCH_HOME=/usr/local/nutch
export PATH=${NUTCH_HOME}/bin:${PATH}

# source /etc/bashrc



3.クロール先を決める

クロール先URLリストを作成する。

今回は2サイトをクロールする予定。

# cd ${NUTCH_HOME}
# mkdir crawl_urls
# vi crawl_urls/corporate_sites

http://www.datasection.co.jp/

# vi crawl_urls/blogs

http://blog.mikuriya.biz/



要は作成したディレクトリcrawl_urls以下に1行1URLで

クロールしたいサイトの開始位置をどんどん記述するってことみたい。



4.クロールのフィルタ設定

今回のクロール対象は2サイトなので、それ以外はクロールしたくない。

以下のファイルに正規表現でフィルタリングを行なう。(正規表現はJava仕様)

# cd ${NUTCH_HOME}
# vi conf/crawl-urlfilter.txt

(修正前)
+^http://([a-z0-9]*\.)*MY.DOMAIN.NAME/
(修正後)
+^http://www\.datasection\.co\.jp/
+^http://blog\.mikuriya\.biz/

※よく見ると先頭に「+」とか「-」が入ってる。

クロールしたいURLパターンは「+」、クロールしたくないURLパターンは「-」を

このファイルに追加していくようだ。



5.クロール設定

クロール用の設定ファイルは初期段階では何も書かれていないので、

nutch-default.xmlをそのままコピーしてくる。

# cat conf/nutch-default.xml > nutch-site.xml

nutch-site.xmlの「http.agent.name」は必須っぽい。適当な名前をつけて。

私の場合は、クロールしたデータを「/usr/local/nutch/crawl_data」に

格納したいので以下を編集した。

# vi conf/nutch-site.xml
<property>
  <name>searcher.dir</name>
  <value>/usr/local/nutch/crawl_data</value> ← ここを編集した
  <description>
    ...
  </description>
</property>

nutch-site.xmlには、propertyのdescription属性に

設定の説明が書いてあるので、各自適当に読んで設定してもらいたい。



6.クロール開始

# /usr/local/nutch/bin/nutch crawl /usr/local/nutch/crawl_urls -dir /usr/local/nutch/crawl_data -depth 3 -topN 50 &

※なおcrawl_dataは勝手に作成されるので、いちいち作らなくてよい。



■WEBアプリケーション

Tomcatからクロールしたデータを検索表示することができるので、その設定を行なう。

${NUTCH_HOME}/nutch-0.9.warがその実体。

# cd ${NUTCH_HOME}
# mkdir nutch_web
# cp nutch-0.9.war nutch_web/
# cd nutch_web
# unzip nutch-0.9.war



解凍したアプリケーションの設定ファイルには、何も書かれていないので

クロール用で使用した設定ファイルを上書きしてやる。

# cp conf/nutch-site.xml nutch_web/WEB-INF/classes/nutch-site.xml



Tomcatで見れるようにシンボリックリンクを貼る。

# cd /usr/local/tomcat/webapps
# ln -s /usr/local/nutch/nutch_web nutch



Tomcat起動

# /usr/local/tomcat/bin/startup.sh



■検索結果のウェブ画面







形態素解析器Senの導入(日本語対応)、Hadoopによる分散(複数のサーバで運用)、

その他パフォーマンスなどは、もったいないから教えない。



■参考URL:

http://dev.team-lab.com/index.php?itemid=120

http://kazuhiro.ty.land.to/blog/2007/01/nutch.html