estseek.inc.php

サマリHyper Estraierによる全文検索ページ表示用プラグイン
リビジョン1.0
対応バージョン1.4.5_1(他は未確認)
投稿者qinf?
投稿日2005-07-11 (月) 18:21:21

説明

Hyper Estraier>http://hyperestraier.sourceforge.net/index.ja.html による全文検索をpukiwikiの文書に適用します。

設置方法

  1. まず、estcmdを用意します(Windows版にはバイナリパッケージが用意されています)。
  2. サーバでestcmdが正常に動作するか確認してください。
  3. estseek.inc.phpをプラグインディレクトリに入れてください。
  4. pukiwikiのベースディレクトリ(以下、${wiki}と表記します)にestcmdを入れておきます。
  5. ?cmd=estseekにアクセスし、正常に起動するかどうか確認してください。
  • スキンに検索欄がある場合、それをestseekに変更する必要があります。
  • デフォルトではcache/estdbにインデックスを用意する必要があります。

インデックスの自動更新

ページ編集後に自動的にインデックスを更新するには、 ${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);

ダウンロード

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として下さい。

ライセンス

PukiWikiと同じライセンスです(pukiwikiソースを使用しているため)。

TODO

  • 条件(AND, OR)の処理がいいかげん
  • estseekの置き場所は?
  • 全体インデックスを作成する方法がない
  • 削除したページがpurgeされない
  • タイトルは検索対象外

更新履歴

  • 1.0: 初回リリース

コメント

  • デフォルトでestcmdとestdbのパスを固定していますが、それは変更可能にする必要はないのでしょうか?また、56行目にsystem関数を使ってファイルの作成をしているかと思いますが、セーフモードがONになっていると$estfileが作成されないためエラーを返してしまう気がいたします。可能であればsystem関数を使わない形でご提供頂くことは可能でしょうか? -- ken? 2007-03-28 (水) 17:36:13

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-03-28 (土) 05:27:40
Site admin: PukiWiki Development Team

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u7. HTML convert time: 0.217 sec.

OSDN