テキスト検索の結果表示にページ本文を含める

メッセージ

PukiWiki/1.4/ちょっと便利に/単語検索の結果表示を拡張の標準化を希望します。
小規模なサイトには非常に便利なこの機能があれば、検索結果一覧からページを選択して見ていくのに、一覧の時点である程度のマトが絞られ、非常に便利かと思います。
勿論、中・大規模なサイトでは負担が増える場合が想定されるので、pukiwiki.ini.phpあたりで機能のON・OFFが選択できると、運用していく過程で小規模→中・大規模になって、負担が増えた場合に運用方法の変更ができるのではと思います。


 

BugTrack/607より:

pukiwiki.ini.php できりかえられるとよいかと思います。

//検索の際にページ名だけではなくマッチした行も表示する
$search_detail = 1;

のように。

まだ問題点があるようですが、改善含めてよろしくお願いします。

関連


do_search_diff.gif
pukiwiki.ini.php : 233行目あたりが最適か?
/////////////////////////////////////////////////
// Search detail
// 0: only page name
// 1: content in detail
$search_detail = 0;
--- func.php.orig	Sun Feb 20 21:50:06 2005
+++ func.php	Mon May 23 18:20:47 2005
@@ -177,6 +177,7 @@
	global $script, $whatsnew, $non_list, $search_non_list;
	global $_msg_andresult, $_msg_orresult, $_msg_notfoundresult;
	global $search_auth;
+	global $search_detail;

	$retval = array();

@@ -201,12 +202,14 @@
			array_unshift($source, $page); // ページ名も検索対象に

		$b_match = FALSE;
+		$lines = array();
		foreach ($keys as $key) {
			$tmp     = preg_grep('/' . $key . '/', $source);
			$b_match = ! empty($tmp);
+			$lines += $tmp;
			if ($b_match xor $b_type) break;
		}
-		if ($b_match) $pages[$page] = get_filetime($page);
+		if ($b_match) $pages[$page] = array(get_filetime($page), $lines);
	}
	if ($non_format) return array_keys($pages);

@@ -217,13 +220,21 @@

	ksort($pages);
	$retval = '<ul>' . "\n";
-	foreach ($pages as $page=>$time) {
+	foreach ($pages as $page=>$arr) {
+		list($time, $lines) = $arr;
		$r_page  = rawurlencode($page);
		$s_page  = htmlspecialchars($page);
		$passage = get_passage($time);
		$retval .= ' <li><a href="' . $script . '?cmd=read&amp;page=' .
			$r_page . '&amp;word=' . $r_word . '">' . $s_page .
			'</a>' . $passage . '</li>' . "\n";
+		if ($search_detail == 1) {
+			$source = '';
+			foreach ($lines as $line) {
+				$source .= ' '.trim($line)." \n";
+			}
+			$retval .= convert_html($source);
+		}
	}
	$retval .= '</ul>' . "\n";

実装案B by umorigu

検索負荷が高いのが気になっていましたので、JavaScriptを使って再実装しました。

残件 (2017/09/25現在)




*1 pukiwiki-1.4.5_1 で最小の差分になるようにしています。

添付ファイル: filedo_search_diff.gif 357件 [詳細] filesearch_pre.diff.1.4.5_1.txt 1020件 [詳細]

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

PukiWiki 1.5.3+ © 2001-2020 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u12. HTML convert time: 0.558 sec.

OSDN