小田切より自己レスで、その後の経過と、疑問の事お尋ねいたします。 8月15日には公開したいと考えていますのでよろしくお願いいたします。
7月27日に書き込みした、末記の4つの質問中 ①は考え方の問題ですが、一応問題なく動作しているようです。 ②は現在のpre_namazuの処理で、一応問題なく動作しているようです。 ③は当面、最大の関心事にて、今回さらに再質問します。お気づきの点あらばご指導 ください。 ④は自力で解決できました。 以上の結果を踏まえて、現在 http://www.net1.jway.ne.jp/hsgjs/groups/index.html のようなところまできました。表題の複数の条件の検索は、当初寺西さまからご教示 いただいた 検索語 +genre:g01 +place:p02 のような文字列を$queryに与える方法は、一つの文書が複数場所を含む場合に適用困 難なことが判明しました。 従って現在は、下段の4つの条件で検索する部分は、全部特殊のコードを当てはめて インデックスを作成し、前処理で 検索語 g01 p02 のように、単純なAND結合で検索する方法で解決しました。勿論、条件が「すべて」 の時は検索語への追加は除きます。 以上、表題の「複数の条件の検索」については、ほぼ解決しましたので、お礼かたが たご報告申し上げます。 【質問】 日本語漢字コードの変換についてお尋ねいたします。 コード不明でキーワードが入力されたとして、これを検索結果画面に&outputルーチ ンで出力しようとすると、どうしても文字化けしてしまいます。 よく理解しないまま、下記の###ようなコードの変換をして、&outputの代わりに、 &prnを使う事で、文字化けしないようなのですが、まったく自信がありません。 初歩的な質問で恐縮ですが、お気づきの点、なんなりとご教示いただければ幸甚で す。 【現状対策】 下記の ### 部分の対策をして、keywd_outを作り、出力時に&output でなく、&prnを使っています。 ・namazu.cgi冒頭の記述 &pre_namazu; my %h_genre,%h_place,%h_area,%h_reqruit,$keywd,$keywd_out,$genre,$place,$area,$ reqruit; ・pre_namazuの処理 sub pre_namazu(){ # 複数条件検索のキーワードを生成する &hash_define; #コード化した条件ストリングを元に戻すためのハッシュ配 列定義(引用省略) $qs = $ENV{'QUERY_STRING'}; @qs = split(/&/,$qs); $query ="query="; foreach $i (0 .. $#qs) { ($fname, $fvalue) = split(/=/,$qs[$i],2); if ($fname eq "keywd") { if ($fvalue ne ""){ $query .= $fvalue; $keywd_out = $fvalue; ### $keywd_out =~ tr/+/ /; ### $keywd_out =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; ### $keywd_out =~ s/&/&/g; ### $keywd_out =~ s/</</g; ### $keywd_out =~ s/>/>/g; ### $keywd_out =~ s/"/"/g; ### } else { $query .= "whole"; } #キーワードが無いとき は全部に含まれる「whole」 } elsif (($fname eq "genre") and ($fvalue ne "g00")) { $query .= "+".$fvalue; $genre = $h_genre{$fvalue}; } elsif (($fname eq "place") and ($fvalue ne "p00")) { $query .= "+".$fvalue; $place = $h_place{$fvalue}; } elsif (($fname eq "area") and ($fvalue ne "a00")) { $query .= "+".$fvalue; $area = $h_area{$fvalue}; } elsif (($fname eq "recruit") and ($fvalue ne "r00")) { $query .= "+".$fvalue; $reqruit = $h_reqruit{$fvalue}; } } $ENV{'QUERY_STRING'} = $query."&".$qs; } ・検索結果画面に検索条件を表示するため、カスタマイズした内容 (<font>タグを 省略して引用) &output("<p><b>(ヒット数) $Keys </b> (検索語)" ) &prn($keywd_out); &output(" (分類) $genre (場所) $place (対象) $area (募集) $reqruit </p>\n"); -----Original Message----- From: 小田切亘 [mailto:wotag...@nifty.com] Sent: Wednesday, July 27, 2011 8:23 AM To: 'namazu-users-ja@namazu.org' 4.確認したい事項 ①インデックス作成はnmz2.0.20、サイトのperlはpnamazu-2006.12.23の組合せの是 非 ②複数条件検索をこのようにpre_namazuで行わず、簡易なnamazuの使い方がありそう に思うので、もしあればご紹介いただきたく。 ③sub pre_namazuの中の日本語コードの考え方、今回は正解が別な入力方法で確認で きたのでそれに合わせたが、最初の「query =」のところだけは、%3Dを使わないで済 んだ。 ④テンプレートの中で、{summary}{from}{date}{to}など、文書依存のデーターを予 めファイル化しておき、検索結果に引用している。meta文で与えて、 NMZ.field.genreなどにリストされている情報をテンプレート中に埋め込む方法はあ りませんか。
_______________________________________________ Namazu-users-ja mailing list Namazu-users-ja@namazu.org http://www.namazu.org/cgi-bin/mailman/listinfo/namazu-users-ja