このページの記事一覧

CORESERVERにHyper Estraier導入 - Movable Type改造計画 (その2)

遅くなりましたが、「CORESERVERにHyper Estraier導入 - Movable Type改造計画」の続きです。


多分、そんなに引っかかるところもなく、自然にインストールできたと思います。

Tracとか、NAMAZUとかの方がよっぽど面倒でした。

手順は以下の通りに進めますが、今回は6~9について書きたいと思います。

  1. libiconvのインストール
  2. zlibのインストール
  3. QDBMのインストール
  4. MeCabのインストール(N.M-gram法を使うのであれば不要)
  5. Hyper Estraierのインストール
  6. 文章ドラフトの作成
  7. インデックスの作成
  8. 検索用CGIの設置
  9. その後の管理について

6.文章ドラフトの作成

文章ドラフトに関しては、Junnama OnlineさんのHyper Estraierの「文書ドラフト」をMTから生成して検索する。を参考にしました。

Movable Typeに以下のようなブログ記事のテンプレートを新規作成します。

Tag検索もHyper Estraierにしたかったので検索できるように修正しました。


@uri=<$MTEntryPermalink$>
@title=<$MTEntryTitle remove_html="1"$>
@cdate=<$MTEntryDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$>
@mdate=<$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$>
category=<$MTEntryCategory$>
categoryUrl=<$MTEntryLink archive_type="Category"$>
<MTEntryIfTagged>tags=<MTEntryTags glue=","><$MTTagName$></MTEntryTags></MTEntryIfTagged>

<$MTEntryTitle remove_html="1"$>
<$MTEntryBody remove_html="1"$>
<$MTEntryMore remove_html="1"$>
<$MTEntryKeywords remove_html="1"$>

アーカイブマッピングは以下のようにします。

このとき、チェックボックスにチェックは入れないようにしてください。

あと、当たり前ですがスタティックパブリッシングにしてください。


draft/%y_%m_%b.est

そして再構築します。



ウェブページも検索に入れたい場合は以下のようなウェブページのテンプレートを新規作成します。

こっちはTag検索抜きました。


@uri=<$MTPagePermalink$>
@title=<$MTPageTitle remove_html="1"$>
@cdate=<$MTPageDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$>
@mdate=<$MTPageModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$>

<$MTPageTitle remove_html="1"$>
<$MTPageBody remove_html="1"$>
<$MTPageMore remove_html="1"$>
<$MTPageKeywords remove_html="1"$>

アーカイブマッピングは以下のようにします。

このとき、チェックボックスにチェックは入れないようにしてください。

あと、当たり前ですがスタティックパブリッシングにしてください。


draft/%-c.est

そして再構築します。


7.インデックスの作成

sshでログインします。

そしたらbashrc読んでからインデックスを作成します。

以下は、MeCabを使うときのものです。


~> source .bashrc
~> estcmd gather -il ja -um casket /virtual/【アカウント名】/public_html/【ブログディレクトリ】/draft

こっちは、N.M-gramを使うときのです。


~> source .bashrc
~> estcmd gather -il ja casket /virtual/【アカウント名】/public_html/【ブログディレクトリ】/draft

8.検索用CGIの設置

ブログディレクトリに移動してから、必要なファイルをコピーします。。


~> cd /virtual/【アカウント名】/public_html/【ブログディレクトリ】/
~/public_html/【ブログディレクトリ】> cp /virtual/【アカウント名】/libexec/estseek.cgi .
~/public_html/【ブログディレクトリ】> cp /virtual/【アカウント名】/share/hyperestraier/estseek.* .

で、コピーされたファイルの中にあるestseek.confっていうファイルを以下のように変更します。

そのほかの項目はそのままでokです。


indexname: /virtual/【アカウント名】/casket
...
replace: ^file:///virtual/【アカウント名】/public_html/【ブログディレクトリ】/{{!}}http://【ブログのアドレス】/
...
formtype: web

まあ、formtypeも別に変更しなくても良いけど、直した方がナビゲーションがしやすいと思います。


なお、それぞれのファイルは以下通りになっています。

  • estseek.cgi:検索用CGIスクリプト
  • estseek.conf:設定ファイル
  • estseek.tmpl:テンプレートファイル
  • estseek.top:トップページファイル
  • estseek.help:ヘルプファイル

このへんは頑張って編集しよう。


9.その後の管理について

ブログの更新時に以下のようにしてインデックスを更新すればいいと思います。

cronで自動更新っていうのもいいかもしれません。

N.M-gramを使う人は、estcmd gatherの-umを抜いてください。


~> test -e /virtual/【アカウント名】/casket-copy && exit
~> cp -R /virtual/【アカウント名】/casket /virtual/【アカウント名】/casket-copy
~> estcmd gather -cl -il ja -cm -um /virtual/【アカウント名】/casket-copy /virtual/【アカウント名】/public_html/【ブログディレクトリ】/draft
~> estcmd purge -cl /virtual/【アカウント名】/casket-copy
~> estcmd optimize /virtual/【アカウント名】/casket-copy
~> rm -rf /virtual/【アカウント名】/casket ; mv /virtual/【アカウント名】/casket-copy /virtual/【アカウント名】/casket

おまけ

あれ、Tag検索はどうやるの?っていう方、これをやってみよう。

2008/09/16追記:
ごめんなさい、estseek.confの設定も必要でした。
下記をestseek.confに記述してください。


extattr: tags|Tag

これで動くようになります。


MTテンプレートの中で、


<$MTTagSearchLink$>

ってなってる部分を


<$MTBlogURL$>estseek.cgi?attr=tags+STRINC+<$MTTagName encode_url="1"$>&amp;perpage=10&amp;enc=UTF-8

って直してみよう。

そしたら、完成!


でもその内、おかしいなぁと気付くところがあると思う。

そのときは普通の検索とタグ検索とでディレクトリ分けてやってみてください。


それと、EstCrawlerという便利なMTプラグインがあるので、いちいち文章ドラフトを構築とかめんどくさいっていう人にはいいかも。

EstCrawler使う場合は、Perlバインディングをインストールしなきゃいけないので、頑張ってインストールしましょう。

ちなみにインストール方法は下記の通り。

この辺うろ覚えなので、あんまり参考にしない方が良いかもね。


~> cd tmp/hyperestraier-1.4.13/perlnative
~/tmp/hyperestraier-1.4.13/perlnative> perl Makefile.PL prefix=/virtual/【アカウント名】
~/tmp/hyperestraier-1.4.13/perlnative> make
~/tmp/hyperestraier-1.4.13/perlnative> make install


以上でHyper Estraierの導入は終了です。

お疲れ様でした。