質問箱/4027

カテゴリ
サマリページ名のみの検索とプレビュー
バージョン1.47 notb
投稿者けろし?
状態質問
投稿日2007-03-21 (水) 16:51:07

質問

質問させていただきます

現在総ページ数が1000ページを超えてきたため検索にとても時間がかかります。ページ名のみの検索というのはできないでしょうか?

また、検索結果にページ内容のプレビュー、もしくは最初の数行を出せたら良いのですが・・・

初心者プログラマーのPukiWiki入門 - PukiWikiのカスタマイズ
teanan:自作プラグイン/search.inc.php(改)

こちらのページを見てみたのですが、目的とはちょっと違うようでした。

回答

  • Google先生にお願いしたら。WebTrack/56 外部非公開サイト(LAN内)とかでは使えませんが。 -- 2007-03-21 (水) 18:16:23
  • 後半部分は sitesearch みたいなこと? -- 2007-03-21 (水) 20:04:09
  • Googleだとやっぱり登録まで時間かかりダメでした。後半部分のプレビューについては、例えばこのページを検索したら上部のテーブル内容辺りまでが確認できたらいいなと思いまして(Plusが近いのでしょうか) -- けろし? 2007-03-21 (水) 22:27:26
  • 本体を改造すればページ名のみの検索にできなくはない
    func.php(v 1.73) (1.47_notb のデフォルト)を次のように修正*1
    function do_search($word, $type = 'AND', $non_format = FALSE, $base = '')
    {
    (中略)
    	$count = count($pages);
    	foreach (array_keys($pages) as $page) {
    		$b_match = FALSE;
    
    		// Search for page name
    		if (! $non_format) {
    			foreach ($keys as $key) {
    				$b_match = preg_match($key, $page);
    				if ($b_type xor $b_match) break; // OR
    			}
    			if ($b_match) continue;
    		}
    
    +		if ($non_format) {
    +
    		// Search auth for page contents
    		if ($search_auth && ! check_readable($page, false, false)) {
    			unset($pages[$page]);
    			--$count;
    		}
    
    		// Search for page contents
    		foreach ($keys as $key) {
    			$b_match = preg_match($key, get_source($page, TRUE, TRUE));
    			if ($b_type xor $b_match) break; // OR
    		}
    +
    +		}
    		if ($b_match) continue;
    
    		unset($pages[$page]); // Miss
    	}
    この修正をすると、本体内蔵の検索機能がページ名のみの検索になります。
    ただし、ページの中身を一切検索できなくなるので注意が必要です。
    $non_format がTRUE でdo_search を呼び出す、AutoLink 機能には影響がないはずです。
    最初の数行~ については、「dev:PukiWiki/1.4/ちょっと便利に/単語検索の結果表示を拡張」と、
    単語検索の結果、ページ名+最初の見出を表示する」 以外に、参考になりそうなページを思い出せないです。 -- 2007-05-26 (土) 13:44:59


*1 タブの量を調整せずに書いてあります

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

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

OSDN