suzuran README

ライセンス

本スクリプトは,Ruby 本体のライセンスにしたがって利用することができます。

http://www.ruby-lang.org/ja/LICENSE.txt

なにか?

Hyper Estraier を使った検索用 CGI です。

P2Pモードと関連語検索を使いたい人向けです。

検索性能は本家に付属の CGI のほうが高いので、P2Pモードを使わない人は 本家 CGI をおすすめします。

管理用ツール kimikage はまだ作成していません。

必要な環境

  • Apache 2.2.4
  • Ruby 1.8.5
  • Hyper Estraier 1.4.10.

※このバージョンでしか動作確認していませんが、相性問題が発見されていたり バージョン特有の機能を使っているわけではありません。

サーバソフトのインストール

Apache, Ruby, QDBM, MeCab, Hyper Estraier をそれぞれインストールします。

Apache

省略。

Ruby

省略。

QDBM

cd /usr/local/src
wget http://qdbm.sourceforge.net/qdbm-1.8.75.tar.gz
tar -xvzf qdbm-1.8.75.tar.gz
cd qdbm-1.8.75
./configure --enable-zlib
make
make install
cd ruby
./configure
make
make install

/etc/ld.so.conf に /usr/local/lib を追加します。その後 ldconfig コマンドを実行します。

ldconfig

MeCab

http://mecab.sourceforge.net/

apt-get install mecab mecab-devel mecab-ipadic
VineLinux の場合です。

Hyper Estraier

cd /usr/local/src
wget http://hyperestraier.sourceforge.net/hyperestraier-1.4.10.tar.gz
tar -xvzf hyperestraier-1.4.10.tar.gz
cd hyperestraier-1.4.10
./configure --enable-mecab
make
make install
cd rubynative
./configure
make
make install
cd ../rubypure/
./configure
make
make install

※rubynative はいまのところ使っていません。

Hyper Estraier の設定

Hyper Estraier を P2P モードで起動させます。

本家ドキュメントをみてがんばってください。

http://hyperestraier.sourceforge.net/nguide-ja.html

以下は、データ置場を /usr/local/hyper_estraier/casket にする場合の一例です。

ディレクトリを作成します

mkdir -p /usr/local/hyper_estraier/casket

初期化します

estmaster init /usr/local/hyper_estraier/casket

サーバをデーモンモードで開始します

※hyperestraierd スクリプトは suzuran の管理ツール kimikage に含まれています。

/etc/init.d/hyperestraierd start
コマンドで起動させる場合は
estmaster start -bg /usr/local/hyper_estraier/casket
ちなみに止めるのは
/etc/init.d/hyperestraierd stop
です。

ブラウザで http://example.com:1978/master_ui を開きます

デフォルトのユーザ名は admin パスワードも admin です。

「Manage Users」をクリックします

ユーザを追加します。

name, passwd, flags を入力します。flags は s にします。

hogesan, pass, s

ユーザ admin は消しておきます

「Manage Nodes」をクリックします

name, label を入力します。

hogefuga, hogefuga

Hyper Estraier に文書を登録します

tips の「初期導入の効率化」が参考になります。

http://hyperestraier.sourceforge.net/nguide-ja.html#tips

cron での追加文書の登録も同じコマンドでできます。

ユーザ名、パスワード、ノード名は ブラウザで設定したものです。

登録中に http://example.com:1978/master_ui を見るとインデックスに 追加されてく様子が確認できます。

  1. #!/bin/bash
  2. find /HTML がおいてあるディレクトリ/ -type f -name '*.html' |
  3. while read file ; do
  4. estcmd draft -fh -il ja "$file" |
  5. estcall put -auth ユーザ名 パスワード http://localhost:1978/node/ノード名
  6. done
24時間以内に更新された HTML ファイルを追加するの場合の一例です。
  1. #!/bin/bash
  2. find /HTML がおいてあるディレクトリ/ -type f -name '*.html' -mmin -3600 |
  3. while read file ; do
  4. estcmd draft -fh -il ja "$file" |
  5. estcall put -auth ユーザ名 パスワード http://localhost:1978/node/ノード名
  6. done

類似検索用の DB を作成します

一度 Hyper Estraier を止めます。

/etc/init.d/hyperestraierd stop
キーワード DB を作成します。作りなおしは -fc オプションをつけます。

形態素解析器を使う場合は、-um オプションをつけます。

estcmd extkeys -um /usr/local/hyper_estraier/casket/_node/hogefuga
サーバをデーモンモードで開始します
/etc/init.d/hyperestraierd start

おわり

これで CGI が動くはず…です。

suzuran のインストール

展開します

suzuran.tar.gz を展開してできたディレクトリを Web サーバから見えるとこにおきます。

tar -xvzf suzuran.tar.gz

設定

suzuran.conf を環境にあわせて編集します。

# suzuran 設定ファイル

# ホームページ
HOMEPAGE = "http://example.com/"
ホームページへ戻るリンクの移動先です。

# Hyper Estraier ノード URL
NODE_URL = "http://localhost:1978/node/hogefuga"

hogefuga の部分は Web で設定したものに書き換えてください。

# HTMLコンテンツディレクトリ
PUBLIC_HTML = "/home/hogefuga/public_html/"

インデックス作成時に指定した HTML のディレクトリです。

Hyper Estraier 内ではディレクトリ名で保存されているので URLへの置換用に使っています。

# 関連語辞書
RELWORDS_DB = "relwords.qdb"

関連語DBのファイル名です。後ほど作成します。

index.rb と違うディレクトリに配置する場合は、ディレクトリ名も指定します。

# 関連語表示上限数
RELWORDS_MAX = 5

関連語表示数の上限です。

# 1ページの表示数
LIST = 10

検索結果の表示数のデフォルト値です。最大値は 100 です。

# 表示順のデフォルト
#SORT_TYPE_DEFAULT = "[SCA]"      # スコア順
SORT_TYPE_DEFAULT = "@mdate NUMD" # 日付(新しい順)

検索結果の表示順のデフォルトです。

  • "@mdate NUMD" # 日付 (新しい順)
  • "@mdate NUMA" # 日付 (古い順)
  • "@title STRA" # 題名 (昇順)
  • "@title STRD" # 題名 (降順)
  • "@size NUMA" # 文書の長さ (短い順)
  • "@size NUMD" # 文書の長さ (長い順)
  • "@uri STRA" # ホームページアドレス (昇順)
  • "@uri STRD" # ホームページアドレス (降順)
# フォームラジオボタンラベル
RADIO = ["サイト全体から検索", "ほげふがから検索"]

# ラジオボタン選択時の検索オプション
SEARCH_OPTION = ["", "@uri STRINC hogefuga"]

検索条件のラジオボタン表示用です。

デフォルトでは、全体から検索と、URL に hogefuga の文字が 含まれるもの、の2つが設定されています。

# 検索結果見出し
SEARCH_HEADER_TITLE = "ほげふがサイト内検索"

タイトルです。

# フッター
HTML_FOOTER = <<-_HTML
<div id="footerLink">
 <a href="#{HOMEPAGE}">TOP</a> -
</div>
_HTML

フッターです。特に制限はありません。

関連語辞書の作成

estcmd words -nl -kt /usr/local/hyper_estraier/casket/_node/hogefuga > hoge.tsv
cat hoge.tsv | vltsv import relwords.qdb

relwords.qdb を suzuran/suzuran/index.rb と同じディレクトリにコピーします。

おわり

ブラウザから閲覧すると動くはず・・・動くといいな。

作者

Project suzuran