** 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&#x3a;//muffin.cias.osakafu-u.ac.jp/wiki/index.php?plugin=attach&pcmd=open&file=estseek.inc.php&refer=FrontPage)
%%http&#x3a;//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



トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 8.2.12. HTML convert time: 0.022 sec.

SourceForge