** estseek.inc.php [#x81d8b93] |RIGHT:100|LEFT:360|c |~サマリ|Hyper Estraierによる全文検索ページ表示用プラグイン| |~リビジョン|1.0| |~対応バージョン|1.4.5_1(他は未確認)| |~投稿者|[[qinf]]| |~投稿日|&new{2005-07-11 (月) 18:21:21};| #contents **説明 [#odb1780c] [[Hyper Estraier>http://hyperestraier.sourceforge.net/index.ja.html]] Hyper Estraier>http://hyperestraier.sourceforge.net/index.ja.html による全文検索をpukiwikiの文書に適用します。 **設置方法 [#h4b1c698] + まず、estcmdを用意します(Windows版にはバイナリパッケージが用意されています)。 + サーバでestcmdが正常に動作するか確認してください。 + estseek.inc.phpをプラグインディレクトリに入れてください。 + pukiwikiのベースディレクトリ(以下、${wiki}と表記します)にestcmdを入れておきます。 + ?cmd=estseekにアクセスし、正常に起動するかどうか確認してください。 - スキンに検索欄がある場合、それをestseekに変更する必要があります。 - デフォルトではcache/estdbにインデックスを用意する必要があります。 **インデックスの自動更新 [#j27ff442] ページ編集後に自動的にインデックスを更新するには、 ${wiki}/lib/file.phpのpage_writeに次のような処理を追加してください (行頭に + が付いているのが、追加部分です)。 // Create wiki text file_write(DATA_DIR, $page, $postdata, $notimestamp); + // kick Hyper Estraier + $estcmd = '/var/www/wiki/estcmd'; + $estdb = '/var/www/wiki/cache/estdb'; + $estfile = CACHE_DIR . encode($page) . '.est'; + $body = convert_html(get_source($page)); + $body = mb_convert_encoding($body, 'utf-8'); + $fp = fopen($estfile, 'w') or + die_message('Cannot write cache file ' . + CACHE_DIR . $estfile . + '<br />Maybe permission is not writable or filename is too long'); + flock($fp, LOCK_EX); + rewind($fp); + fputs($fp, $body); + fclose($fp); + + $estdraft = $estfile . 'dr'; + $fp = fopen($estdraft, 'w') or + die_message('Cannot write cache file ' . + CACHE_DIR . $estdraft . + '<br />Maybe permission is not writable or filename is too long'); + flock($fp, LOCK_EX); + rewind($fp); + fputs($fp, '@uri=' . urlencode($page) . "\n"); + fputs($fp, '@title=' . mb_convert_encoding($page, 'utf-8') . "\n"); + fclose($fp); + system($estcmd . ' draft -fh ' . $estfile . ' >> ' . $estdraft); + system($estcmd . ' put ' . $estdb . ' ' . $estdraft . ' > /dev/null'); + unlink($estfile); + unlink($estdraft); **ダウンロード [#f1375ce2] #ref(http://muffin.cias.osakafu-u.ac.jp/wiki/index.php?plugin=attach&pcmd=open&file=estseek.inc.php&refer=FrontPage) //#ref(http://muffin.cias.osakafu-u.ac.jp/wiki/index.php?plugin=attach&pcmd=open&file=estseek.inc.php&refer=FrontPage) %%http://muffin.cias.osakafu-u.ac.jp/wiki/index.php?plugin=attach&pcmd=open&file=estseek.inc.php&refer=FrontPage%% (現在、attachプラグインによるXSSのためファイルを添付できないため、このファイルはpukiwiki本家ではなく外部に置かれています) ''ファイル名はestseek.inc.phpとして下さい。'' **ライセンス [#e2e83409] PukiWikiと同じライセンスです(pukiwikiソースを使用しているため)。 ** TODO [#mc18ed48] - 条件(AND, OR)の処理がいいかげん - estseekの置き場所は? - 全体インデックスを作成する方法がない - 削除したページがpurgeされない - タイトルは検索対象外 **更新履歴 [#d11cf83f] - 1.0: 初回リリース **コメント [#hfca41c8] - デフォルトでestcmdとestdbのパスを固定していますが、それは変更可能にする必要はないのでしょうか?また、56行目にsystem関数を使ってファイルの作成をしているかと思いますが、セーフモードがONになっていると$estfileが作成されないためエラーを返してしまう気がいたします。可能であればsystem関数を使わない形でご提供頂くことは可能でしょうか? -- [[ken]] &new{2007-03-28 (水) 17:36:13}; #comment - 1 -- [[1]] &new{2015-03-27 (金) 01:11:03}; //#comment