【しばらく編集不可モードで運営します】 編集(管理者用) | 差分 | 新規作成 | 一覧 | RSS | FrontPage | 検索 | 更新履歴

カテゴリ機能 - 新規機能提案

目次

新規機能提案

どんな機能か

登録されたページは一覧や更新履歴または各ページ内のリンクから参照できるのですが、これらとは別にカテゴリやディレクトリとして整理したいなという要望です。

イメージとしてはGoogleのディレクトリ機能や関心空間のカテゴリのイメージ。

手でカテゴリページを作成するのもありなんですが、カテゴリ未登録のページとかも一覧としてみたい。

まだ仕様がもやもやとしています。shino@freedomcat 2002/5/19


InterWiki&検索機能ベース by typer

キーワードとなる文字は手動で設定。あとは自動でindex化するのは難しくなさそう。 キーワードはInterWikiのように...と、ここまで考えたところでInterWikiと検索機能を組み合わせれば実現できることに気が付いた。

カテゴリ:Wiki カテゴリ:perl カテゴリ:Internet

そして、いろいろ思いついてみるものの、結局、検索機能の拡充要望リストだったりする。

WikiNameのみ対象と出来ないか?

  sub print_searchform {
      my ($word) = @_;
 +    my $onlyname = (exists $form{onlyname})?' checked="checked"':'';
      print <<"EOD";
  <form action="$url_cgi" method="get">
      <input type="hidden" name="mycmd" value="search">
      <input type="text" name="mymsg" value="$word" size="20">
      <input type="submit" value="$resource{searchbutton}">
 +    <br><input type="checkbox" name="onlyname" value="1"$onlyname>WikiName only
  </form>
  EOD
  }

      foreach my $page (sort keys %database) {
          next if $page =~ /^$RecentChanges$/;
 -        if ($database{$page} =~ /\Q$form{mymsg}\E/ or $page =~ /\Q$form{mymsg}\E/) {
 +        if (not exists $form{onlyname} and $database{$page} =~ /\Q$form{mymsg}\E/ or $page =~ /\Q$form{mymsg}\E/) {
              if ($counter == 0) {
                  print qq|<ul>|;

余談:いじっていて気が付いたが、if文の"$database{$page} =~"と"$page =~"は入れ替えたほうが少しは効率上がるかも。orの前で正になったらorの後を評価しない=データベースにアクセスしないから。微々たる物ですが損はしないと思う。

and/or・スコア制の導入

インライン表示

大/小・全/半・平/片・英/和・読み

「search」「Search」
perlの正規表現マッチには大小を区別しないオプションがある。
「search」「search」、「ケンサク」「けんさく」
検索前に検索対象文をjcode.plのtrでどちらかに統一し、キーワードも同じように統一すればよい。

  sub print_searchform {
      my ($word) = @_;
      my $onlyname = (exists $form{onlyname})?' checked="checked"':'';
 +    my $caseinsensitive = (exists $form{caseinsensitive})?' checked="checked"':'';
      print <<"EOD";
  <form action="$url_cgi" method="get">
      <input type="hidden" name="mycmd" value="search">
      <input type="text" name="mymsg" value="$word" size="20">
      <input type="submit" value="$resource{searchbutton}">
      <br><input type="checkbox" name="onlyname" value="1"$onlyname>WikiName only
 +    <input type="checkbox" name="caseinsensitive" value="1"$caseinsensitive>Case Insensitive
  </form>
  EOD
  }

      foreach my $page (sort keys %database) {
          next if $page =~ /^$RecentChanges$/;
 -        if (not exists $form{onlyname} and $database{$page} =~ /\Q$form{mymsg}\E/ or $page =~ /\Q$form{mymsg}\E/) {
 +        if ((exists $form{caseinsensitive})?
 +            (not exists $form{onlyname} and $database{$page} =~ /\Q$form{mymsg}\E/i or $page =~ /\Q$form{mymsg}\E/i):
 +            (not exists $form{onlyname} and $database{$page} =~ /\Q$form{mymsg}\E/  or $page =~ /\Q$form{mymsg}\E/)) {
              if ($counter == 0) {
                  print qq|<ul>|;

カテゴリ未登録ページ

検索機能をベースとした場合これは難しい。検索にandとnotを実装すれば出来なくないが、すべてのキーワードを羅列しなければならない。あまり現実的ではないように思う。