Namazu-users-ja(旧)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: 複数の subquery



寺西です。

# これが正解ではないですが...。

nakaz@xxxxxxxxxxxxxx wrote:
> 
> 「検索式」に不慣れな人が、WWW をとおして検索することを想定しています。
> そのため、いくつかの単語については選択肢を用意してあげたいと思っています。
...
> ドキュメントや(よく判るわけではないのですが)ソースも覗いてみましたが、
> subquery はひとつしか設定できないようです。
> 
> ◎上記の希望を、いまの namazu で実現できるのなら、その方法を教えていた
>   だけないでしょうか?
> 
> ◎subquery1,2,.. と 10個ほど用意しておいて、そのうち使いたい数だけ使え
>   るようにしておく、という仕様にはできませんでしょうか?
...
> cgi は自分で perl か何かで書いて、その中から namazu -h と呼べばいいや、
> と思ったのですが、「namazu のかわりに namazu.cgi を使え」と
> 言われてしまいました。

では、namazu.cgi を呼ぶのはダメでしょうか?
次の perl スクリプトで、namazu.cgi を呼びだせます。
(環境に応じて書き換えてください。)

サンプルの HTML では、テキストボックスが3つと、コンボボックスが
2つあります。
なお、単純なサンプルなので、3つのテキストボックスの評価順は
固定ですし、3 つとも入っていないといけなかったりします。

評価式はこのようになっています。
query=( ( $q1 $op1 $q2 ) $op2 $q3 )

あとは、適当にスクリプトを書き換えれば、subquery を埋め込んで
おいたりとか、いろいろできると思います。
--------------------------------------------------------
sample.html
--------------------------------------------------------
<HTML>
<BODY>

<FORM ACTION="./test.pl">

<INPUT TYPE="TEXT" NAME="q1">
<BR>

<INPUT TYPE="TEXT" NAME="q2">
<select name="op1">
 <option value="or" selected>OR
 <option value="and">AND
</select>
<BR>

<INPUT TYPE="TEXT" NAME="q3">
<select name="op2">
 <option value="or" selected>OR
 <option value="and">AND
</select>
<BR>

<INPUT TYPE="submit" VALUE="OK">
</FORM>
</BODY>
</HTML>
--------------------------------------------------------
test.pl
--------------------------------------------------------
#!/usr/local/bin/perl
require "cgi-lib.pl";

&ReadParse;

$q1=$in{'q1'};
$q2=$in{'q2'};
$q3=$in{'q3'};

$op1=$in{'op1'};
$op2=$in{'op2'};

$ENV{'QUERY_STRING'}="query=(%20(%20$q1%20$op1%20$q2%20)%20$op2%20$q3%20)";
$ENV{'SCRIPT_NAME'}="/cgi-bin/namazu.cgi";
system("/www/cgi-bin/namazu.cgi");
--------------------------------------------------------

もっとも、このスクリプト自体は sysytem() を使っているので、
セキュリティ上の問題はあります。
あくまでも、こういうのもありますよ程度にどうぞ。
# まずいかな?
--
寺西