Hyper Estraierの「文書ドラフト」をMTから生成して検索する。

| コメント(5) | トラックバック(2)

以前のエントリー「mt-search.cgiの代替プログラム。」で書いたように、mt-search.cgiは速度面や負荷に難があるので代替プログラムを書いてみた。ずいぶんマシになったとは思うがまだまだ遅い。
ということで MovableTypeHyper Estraierの「文書ドラフト」を出力するテンプレートを追加してそれに対してインデックス作成→検索を行い、精度が高く高速な検索を実現できたのでメモ。

ポイントは「文書ドラフト」をエントリーアーカイブのHTMLとは別に生成すること。
生成されたHTMLをそのまま検索すると、ナビゲーション等の不要な「ゴミ」を検索にひっかけてしまい、検索精度が下がる。「文書ドラフト」に必要な情報のみを出力することで検索精度をあげることができる。

まず、Hyper Estraierをインストール。

MovableTypeに以下のようなエントリーアーカイブのテンプレートを追加する。

@uri=<$MTEntryPermalink$>
@title=<$MTEntryTitle remove_html="1"$>
@cdate=<$MTEntryDate format="%Y-%m-%dT%H:%M:%S"$>+09:00
@mdate=<$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$>+09:00
category=<$MTEntryCategory$>
categoryUrl=<$MTEntryLink archive_type="Category"$>

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

※この場合画像のAlt属性等が検索出来ないので、そのあたりは別途プラグインを書く予定。

「設定」→「公開」→「アーカイブ・マッピング」→「マッピングを新規作成」
テンプレート:「エントリーアーカイブ」を選択

draft/%y_%m_%b.est

とする。

再構築後、文書ドラフトが生成されたdraftフォルダに対してインデックスを作成する。

estcmd gather -il ja -sd casket /home/junnama/public_html/online/draft

あとはestseek.cgiを使っても良いし「言語バインディング」が公開されているのでオリジナルのプログラムを作成することも可能。
今回はPHPからestcmdをshell_execで叩いてxmlで結果を受取ってからそいつを整形して出力するようにした。

あわせてPHPから読み込むテンプレートを「検索用テンプレート」としてこちらもMovableTypeに登録しておくと再構築の際に「最近のエントリー」とかそのあたりが反映されるようになる。

Junnama Online (Mirror)検索

トラックバック(2)

トラックバックURL: http://junnama.alfasado.net/cgi/mt/mt-tb.cgi/426

Hyper Estraierの「文書ドラフト」をMTから生成して検索する。 (Junnama Online (Mirror)) (tags:... 続きを読む

以前のエントリー「mt-search.cgiの代替プログラム。」で書いたように、 続きを読む

コメント(5)

追記:

プラグインを作成。
インデックスの更新を管理画面から行えるようにした。これは便利!

はじめまして こんにちは
「文書ドラフト」件大変参考にさせていただきました
ありがとうございます

そのインデックス更新用プラグインの公開を是非、是非お願いいたします

出来ればエントリー投稿・編集に連動して自動だと大変嬉しかったりします

ttp://mook.jpn.org/archives/2007/02/hyper_estraier_3.html
超適当なんですが、どんなでしょう。。

>こてつさん

コメントどうも、です。
う〜ん、プラグイン書いてエントリ保存時にインデックス更新ってのがスマートだと思うんですが(Perlバインディングでもシェルスクリプト実行でも良いのですが、プラグインからエントリ保存のタイミングで実行する)。
僕が現在書いて使っているのは、再構築画面にインデックスの更新ボタンを付けてインデックス更新するものです。

ただ、まるごと更新ってあんまりスマートじゃないですよね。更新されたエントリだけの差分でインデックス更新するものを書こうかと思っているところでとまってます。

> まるごと更新ってあんまりスマートじゃないですよね。

ですよね。多少力技、強引ぎみですからね。「-cl」と「-sd」と「-cm」オプションで差分登録でとりあえず我慢しているところです。

コメントする

Facebook

Twitter

このブログ記事について

このページは、Junnama Nodaが2007年1月31日 20:09に書いたブログ記事です。

ひとつ前のブログ記事は「残業代で損をするのは誰だ?」です。

次のブログ記事は「MovableType Background Rebuilder Plugin((元)最新版).」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 6.2.6