表紙 | 新規 | 編集 | 編集 | 差分 | 一覧 | RSS | 検索 | 閲覧履歴 | 作成履歴 | 更新履歴

update_search_index関数 - YukiWikiベースのPonyWikiのソースを読んでみる その31

YukiWikiベースのPonyWikiのソースを読んでみる その31

検索用インデックスの更新処理を行う。
ついでにキャッシュの削除もやってます。

sub update_search_index {
	my ($name,$contents,$mtime) = @_;
	my ($subject) = split(/\n/,$contents);
	
	# 改行コードの統一とブランケットネームの消し込み
	$contents =~ s/\x0D\x0A|\x0D|\x0A|\n|\t|\[\[|\]\]//g;
	$subject  =~ s/\x0D\x0A|\x0D|\x0A|\n|\t|\[\[|\]\]//g;

	# 更新日時の数値化
	$mtime = info_to_digit($mtime);
	
	&open_search_index;
	my $index_point = &bsearch($name,\@search_index);
	
	# インデックスのアップデート
	if ($contents) {
		$search_index[$index_point] = "$name\t$contents\t$subject\t$mtime"
	} else {
		$search_index[$index_point] = "\n";
	}
	
	# 追加・削除に伴うインデックスのソート
	if ($index_point == -1 || !$contents) {
		&search_index_sort;
	}
	&close_search_index;
	
	
	# cache purge
	while ( my $cname = each(%cachebase) ){
		delete $cachebase{$cname} ;
	}
}
先頭へ