[Namazu-users-ja 1213] Re: 複数の条件の検索

Tasamasa Teranishi yw3t-trns @ asahi-net.or.jp
2011年 7月 6日 (水) 10:14:18 JST


寺西です。

(2011/07/06 4:18), 小田切亘 wrote:
> 次の段階として、検索方法の2段目に書いたように、複数項目による絞込み検索をで
> きないか検討しています。

問題点をあまり理解できていませんが、
「複数項目による絞込み検索」ということでしたら AND 検索を
行うということになるかと思います。

> 検索結果として
> 「活動分類項目」が00で 且つ
> 「主な活動場所」が05で 且つ
> 「対象地域」が11 である
> ような、「複数の条件の検索」結果をヒットさせたいのです。

いろいろ方法はあるかと思いますが、ぱっと思いつく方法としては
フィールド検索ですね。
「活動分類項目」、「主な活動場所」、「対象地域」をそれぞれ
フィールド情報としてインデックスを作成すればお望みの検索は
可能かと思います。

もう少し書くと、検索したい文書ファイルそれぞれに、
genre、place、area といった属性(フィールド)を付けることにして、
各文書ファイルにフィールド値を設定します。

その文書ファイルから
インデックスを作成することで、NMZ.field.genere*, NMZ.field.place*,
NMZ.field.area* といったファイルを作成します。

検索時には、「キーワード」と各フィールドで検索した値を AND 検索
すれば良いので、検索式は

キーワード +genere:00 +place:05 +area:11

になります。この加工した検索式を namazu.cgi に渡します。

そうすると、キーワードを含む文書で、genere フィールドの値が 00 で
place フィールドの値が 05 で、area フィールドの値が 11 の文書を
検索することができます。

なお、「活動分類項目」が「すべて」の場合は、genere フィールド
検索を省いて

キーワード +place:05 +area:11

という検索式になるように加工して namazu.cgi に渡します。

これらの検索式の加工は、JavaScript で行っても良いですし、ラッパ
CGI等を作っても良いかと思います。
# この辺りは Namazu というよりは、JavaScript とか、CGI の話に
# なるので、そちらのジャンルでお調べ下さい。

で、問題になるのは、どうやって各文書にフィールド値を与えるかと
いうことですが、元文書が HTML なら簡単に仕込むことができます。

例えば

<html>
<head>
<meta name="genere" content="00">
<meta name="place" content="05">
<meta name="area" content="11">
</head>
<body>
  :

のようにしてフィールド値をMetaタグで仕込みます。

次に mknmzrc の $META_TAGS を次のように変更します。

$META_TAGS = "genere|place|area";

そして、インデックス作成時に mknmz に -M オプションを指定すると、
各 HTML の meta タグで指定した genere, place, area フィールド値
から、NMZ.field.genere*, NMZ.field.place*, NMZ.field.area* を
含むインデックスが作成できます。

元文書が HTML でない場合にフィールド情報を仕込む手段はいろいろ
ありますが、長くなるのでここでの説明は省略します。
-- 
=====================================================================
寺西 忠勝(TADAMASA TERANISHI)  yw3t-trns @ asahi-net.or.jp
http://www.asahi-net.or.jp/~yw3t-trns/index.htm
Key fingerprint =  474E 4D93 8E97 11F6 662D  8A42 17F5 52F4 10E7 D14E


Namazu-users-ja メーリングリストの案内