PukiWiki のサイト内検索を msearch に
先日、AviSynth Wiki で使用している PukiWiki のサイト内全文検索を msearch に変更しました。ここでは、その際に参考にしたページと、スクリプトの改造時に気づいた点について紹介したいと思います。
indexing.pl の改造
PukiWiki で msearch を利用する方法については、msearch掲示板で過去にあった事例の「Pukiwikiでmsearchを利用したい」で 2 つの方法が紹介されていました。私は、このうち PukiWikiでmsearchを利用(msearch掲示板)に書かれている方法を使いました。
改造するのは、indexing.pl の 548 ~ 554 行目付近です。オリジナル(バージョン 1,52)の 548 ~ 554 行目は、次のようになっています。
## タイトルを取得する
$contents =~ /<title.*?>(.*?)<\/title>/i;
$title = $1;
$title =~ s/\s+/ /g;
$title =~ s/^\s+//;
&jcode::tr(\$title,'0-9A-Za-z+][.()?/@-',
'0-9A-Za-z+][.()?/@-');
まず、このうちの 549 ~ 552 行目の行頭に # を付けてコメントアウトします(548 行目は元々コメントなので、新たに付ける必要はない)。
次に、552 行目と 553 行目(「&jcode::tr(...」から始まる行)の間に、記事番号:2513 の「# ■ここからPukiWiki対策開始/タイトル」から「# ■ここまでPukiWiki対策/タイトル」までを挿入します。ただし、「$title2 = $title ;(★ここに挿入)」のコメントがちゃんとコメントアウトされていないので、次のように # を付けてコメント化する必要があります。
$title2 = $title ; #(★ここに挿入)
そして、同じく記事番号:2513 の「# ■ここからPukiWiki対策開始/URL」から「# ■ここまでPukiWiki対策/URL」までを 555 行目に追加します。これで改造は終了です。
インデックス作成時の注意
PukiWiki の各ページは wiki フォルダに txt という拡張子で保存されています。このため、genindex.cgi(または genindex.pl)を使ってインデックスを作成する際、「対象ディレクトリ」として(絶対パスまたは相対パスで)「wiki」フォルダを指定し、「対象ファイルの拡張子」を「.txt」にします。
/public_html/
├/pukiwiki/wiki/
└/msearch/genindex.cgi
たとえば、上記のようなフォルダ構成になっているとすると、「対象ディレクトリ」は相対パスで「../pukiwiki/wiki/」となります(絶対パスはプロバイダやレンタルサーバーによって異なる)。
また、このままでは :config から始まる設定用のファイルまでインデックスされてしまいますので、「非対象ファイル」として「(3A636F6E666967)」のように正規表現で指定するといいでしょう。ほかに、PukiWiki のヘルプなど最初から PukiWiki に同梱されているファイルをインデックスしたくない場合も、同様に指定します。以下は、インデックス非対象ファイルに設定しても良さそうなファイル(またはその正規表現の例)の一覧です。
- :config 以下: (3A636F6E666967)
- MenuBar: 4D656E75426172.txt
- FormattingRules: 466F726D617474696E6752756C6573.txt
- InterWiki 関連: (496E74657257696B69)
- Help: 48656C70.txt
- PukiWiki 以下: (50756B6957696B69)
- SandBox: 53616E64426F78.txt
- WikiName: 57696B694E616D65.txt
- WikiEngines: 57696B69456E67696E6573.txt
- WikiWikiWeb: 57696B6957696B69576562.txt
- YukiWiki: 59756B6957696B69.txt
- PHP: 504850.txt
- BracketName: 427261636B65744E616D65.txt
スポンサード リンク
writeback message: Ready to post a comment.
- [Preview]ボタンをクリックすると、コメント内容をプレビューすることができます(JavaScript使用)。
- スパム対策としてリファラチェックを行っています。セキュリティソフトの設定でリファラを無効にしていると投稿できません。
- エントリの内容と無関係と思われるコメントやトラックバックは削除されます。
- 当ブログへの言及リンクがないトラックバックはブロックされます。



