CGI-Search | カスタマイズノートトップ
キーワード検索  

RSS1.0/RDF
検索キーワードに一致するデータ内文字を検索結果一覧で強調表示する
分類: データ検索関連
人気度: 5/5 
検索キーワードに一致する登録データ内の文字を検索結果ページのデータ一覧で強調表示するように出来ます。ユーザーファイルベース、データファイルベースのどちらでも利用可能ですが、Multi検索フォームから検索した検索キーワードにのみ対応しています。
対象バージョン及び更新履歴
対象バージョン: ver9.85
  • 2012/11/16 ver1.2 記述ミスを修正(/\Q$key\E/→/\Q$word\E/に修正)
  • 2010/06/16 ver1.1 1バイトの検索ワードが2バイト文字の2バイト目にマッチする不具合を解消
    jcode.plでは文字コード変換が正しく作動しないためJcode.pmの利用が必須となりました
    検索フォームで強調表示するかしないかの選択を出来るように
  • 2010/04/05 ver1.0 新規公開
  • カスタマイズ方法

    1. ライブラリファイルダウンロード

    ライブラリファイル「db-highlighting.cgi」を次のリンクよりダウンロードして下さい。
    ダウンロードファイルは「db-highlighting.txt(TEXT形式)」になっています。
    ダウンロード後に「db-highlighting.cgi」とファイル名を変更して下さい。

    ダウンロード db-highlighting.txt

    2. db-highlighting.cgiの設定

    次の2項目のデータを設定します。
    # Multi検索フォームの検索番号
    my$SearchNum = 9;
    
    # 強調表示文字のCSSスタイル
    my$HlStyle = qq(font-weight: bold;background-color: #ffff00;);
    • $SearchNum: Multi検索フォームの検索番号を設定します。「S_*_Key_Multi」となっている「*」の番号を設定します。デフォルト検索ページsample.htmlのMulti検索番号では「9」となります。
    • $HlStyle: 強調表示する文字のスタイルをCSSにて指定します。デフォルトでは背景色を黄色にし、文字を太字としています。
      文字色を変更する場合は「color: #ff0000;」(赤)を追加します。文字サイズを変更する場合は「font-size: 14pt;」(14ポイント)などを追加します。

    3. FTPアップロードとパーミッション

    database/libディレクトリ
    へFTPアップロードします。
    パーミッションは「644」又は「604」です。

    4. db-s.cgiの修正

    1) Lrequireを追加

    db-s.cgiの最初の方を次のように修正します。
      &Lrequire('./lib/fold.pl');
    + &Lrequire('./lib/db-highlighting.cgi');

    2) _PrintDataサブルーチンの修正

    次のように2行を追加修正します。
          }foreach(@{$CNF{DataItem}{Comma}}){
              ($_ eq '') and next;
              while($VD[$REC{Data}{$_}]=~s/^([+-]?\d+)(\d{3})/$1,$2/g){}
          }
    +     &Highlighting('Data') if($FORM{HLON});
      }else{ @VU=@{$DATA{$HitNums[$i]}} }
      if(@VU>0){
      
          ... 省略 ...
      
          }foreach(@{$CNF{UserItem}{Comma}}){
              ($_ eq '') and next;
              while($VU[$REC{User}{$_}]=~s/^([+-]?\d+)(\d{3})/$1,$2/g){}
          }
    +     &Highlighting('User') if($FORM{HLON});
      }@RU=map{ &UrlEncode($_) }@VU;
      @RD=map{ &UrlEncode($_) }@VD;
      &{$FORM{DataHtml}};

    5. db-setup.cgiの設定

    2010/06/16のバージョンアップにてJcode.pmの利用が必須となりました。
    日本語処理設定を次のようにして下さい。
    # ■日本語処理設定(いずれか使用しない方の行頭に#を付加)
    use Jcode; $JCODE='Jcode::convert'; # Jcode.pm
    #&Lrequire('./lib/jcode.pl'); $JCODE='jcode::convert'; # jcode.pl

    6. 検索フォームの設定

    2010/06/16追加。「4-2 _PrintDataサブルーチンの修正」にも修正を加えました。
    検索開始時に検索キーワードを強調表示するかどうかをON/OFF出来ます。
    検索フォーム(sample.htmlなど)内に次のチェックボックスを追加します。
    <input type="checkbox" name="HLON" value="1">検索キーワードを強調表示する
    常に強調表示をONにしたい場合は次の記述をフォーム内に追加します。
    こちらを選択した場合は前述「checkbox」は不要です。上か下のどちらかを記述します。
    <input type="hidden" name="HLON" value="1">
    利用方法
    検索フォームでMulti検索から検索されたキーワードに対して強調表示が可能です。
    Multi検索とは、AmigoDatabaseに同封されていますreadme.txtに次のように説明されている検索フォームのことです。
    また、検索対照データ種類には「Multi」と指定する事もできます。
    Multiとすると<SELECT multiple name="Target_検索条件番号">のように
    他の部品から検索対照データ種類を複数選択させる事ができます。
    HIDDENで固定する場合は<INPUT type="hidden" name="Target_検索条件番号"
    value="検索対照データ種類(,で区切る)">と記述します。
    
    ※全文検索の場合は「all」という値を指定します。
    当カスタマイズノートでMulti検索を利用した「一行検索窓を作ってみよう」をご紹介しています。Multi検索が分かりにくい方はこちらも参考にして下さい。

    なお、検索結果のデータ一覧で該当のデータ種類が表示されるように設定されていなければ強調された文字列は表示されませんのでご注意ください。
    引用文中の「+」や「-」についてはこちらをご覧下さい。引用文の「+」や「-」が正しく表示されていない場合があります。「view plain」をクリックして頂ければ正しい引用文が表示されます。
    update at 2012/11/16(Fri) 20:17:40. DataNum 48 [ TOP ]

    Comment Form: 投稿数(0)


    コメント投稿は登録ユーザー限定です。ログインした状態でご利用下さい。
    • カスタマイズへのご意見やご要望などのコメントにご利用下さい。
    • 不適切な発言は即時削除致します。
    • 管理人はコメントに対し一切お返事を致しませんの予めご了承下さい。
    • 導入トラブルやご質問、バグの報告はAmigoDatabaseファンフォーラムまでお願いします。
    [ TOP ]