• ベストアンサー

KENTさんのところのサイト内検索CGIについて

KENTさんの書籍「KENTとはじめるCGI厳選Perlスクリプト集」というものの中から、サイト内検索CGIを使用してみようと 思ったのですが、ちょっと形態を自分なりに変更しているんですが、わからなくなってしまったので教えてください。 現在はローカルでテスト中なのでCGIファイル自体は127.0.0.1の中にあります。 実際に検索を行いたいファイルはWeb上にあるので、そちらの指定は 「http://www.***」というようにしています。 # 対象ディレクトリ # → / からのフルパスで指定もよい $finddir = "http://www.***"; # 上記「対象ディレクトリ」のURL # → 最後は / で閉じない $findurl = "http://www.***"; と変更したんですが、「ヒットしませんでした」という結果に…。 検索したいキーワードはきちんと表示されてるのでデータの送受信はうまくいってると思うんですが。 もちろんKENTさんのところで質問した方がいいのでしょうが、できるだけ回答が早く欲しいので、 みなさんに聞いてもらおうと思いこちらで質問しました。 おわかりの方いらっしゃったら教えてください。 お願いします。

  • w-inty
  • お礼率72% (1169/1618)
  • CGI
  • 回答数12
  • ありがとう数18

質問者が選んだベストアンサー

  • ベストアンサー
  • 78tch
  • ベストアンサー率31% (50/157)
回答No.12

ども、本見てきました。まず。「170Pから173Pをしっかり読んでよっ!!!」 $finddir = "../a"; $findurl = "http://www.***/a"; @targets("a"); か $finddir = ".."; $findurl = "http://www.***"; @targets("a"); でしょう。(もちろんaはあなたの検索かけたいディレクトリですよ) その上で、ローカルでも試したければローカルでは $findurl = "http://192.168.0.1"; とかでしょう。(IPは適宜実IPに。) 170Pに載ってる範囲をその時々の環境に合わせるのです。うまく動かないのは単なる設定漏れ、設定間違いでしょう。 置き換えて読んだときに../では/がダブりませんでしたか?そこで「あ、"../"だと..//aになるから".."にすれば../aになるな」って読まなきゃですよ。 でもこれいいですね。僕も使おうっと。

w-inty
質問者

お礼

回答ありがとうございます。 あえて何も設定を変更しないでやったらちゃんとできました…。ということは設定を変えたところが間違っているということになりますよね。 今現在FLASHのテキストボックスに入力→ボタンを押す(ここまではFLASH)→cgi実行、のようにしてるんですが、 テキストボックスへ入力し、ボタンを押すと、cgiの本来キーワードを入れるところに勝手にキーワードが入ります。 (テキストボックスに入れたもの) 検索結果の件数もいっしょです。 ですがページ数がやっぱり膨大な数になってしまうんです。 キーワードの入力を別の場所からして、その値をひっぱってくる、っていう単純なことさえも満足にできてません。。 FLASHで入力、ボタンを押す、キーワードが勝手に入る、すぐにストップさせ、cgiの方の「検索」ボタンを押すとちゃんと検索結果が表示されます。 これって何がおかしいのかわかりますか? FLASHの方のボタンのアクションは on(press){ getURL("http://www.***/cgi_script/wfinder.cgi","NAKA","POST"); } です。

w-inty
質問者

補足

すいません、自己解決です。 cond(ANDとOR)とview(10-40件)もすべてFLASHからデータ送信するようにしたら無事表示されました。 ありがとうございました。 何度も何度も根気よく教えてくださって本当にありがとうございました。

その他の回答 (11)

  • 78tch
  • ベストアンサー率31% (50/157)
回答No.11

> それともプログラムを載せてしまうのは問題ありますかね? →やめてください。

w-inty
質問者

お礼

はい、わかりました。

  • 78tch
  • ベストアンサー率31% (50/157)
回答No.10

$finddir = "../a/"; $findurl = "http://www.***/a"; か $finddir = "../"; $findurl = "http://www.***"; としてダメなら、他も間違ってるのかもですね。お時間いただければ本入手してきてコード見てみますわ。見ずに言ってますので。

w-inty
質問者

お礼

$finddir = "../a/"; $findurl = "http://www.***/a"; だと「ヒットしません」で $finddir = "../"; $findurl = "http://www.***"; だと「○件あります」ですが、ページ数が膨大に出てしまいました。 もし大丈夫であれば、本を見てご意見いただければと思います。 よろしくお願いします。 それともプログラムを載せてしまうのは問題ありますかね? (書籍のものなので著作権にひっかかってしまうんでしょうか?)

  • 78tch
  • ベストアンサー率31% (50/157)
回答No.9

$finddir = "http://www./***/"; じゃダメですって言ってるでしょうが・・・

w-inty
質問者

お礼

回答ありがとうございます。 スイマセン、 $finddir = "../a/"; $finddir = "../"; としてみてもだめでした。 これも間違ってますでしょうか?

  • 78tch
  • ベストアンサー率31% (50/157)
回答No.8

あ、よく考えたら 127.0.0.1 じゃなくてイントラWebサーバーの実IPにしたらどうですか?

w-inty
質問者

お礼

回答ありがとうございます。 一応ファイル内をみてみましたが、文法的におかしいところは見当たらず。 もうぜんぜんわけがわからなくなってしまったので(^^;、 cgiをweb上に載せてしまいました。 http://www.*** の直下に置いてみました。 検索するファイルも http://www.*** の直下~他フォルダ全部です。 それで # 対象ディレクトリ # → / からのフルパスで指定もよい $finddir = "http://www./***/"; # 上記「対象ディレクトリ」のURL # → 最後は / で閉じない $findurl = "http://www.***"; としてみたんですが、ページ数は表示されませんが、「ヒットしません」と。。 この指定方法はあってるんでしょうか? ※何度も何度もスイマセン。

  • 78tch
  • ベストアンサー率31% (50/157)
回答No.7

そうですか・・・ 本が手元にないのでなんとも言えません・・・ こうなったらご自分でその変数がロジック中のどこでどう使われてるかを追っかけてください。 方法: メモ帳で開いて検索で変数名を検索、使われてる箇所を全部http://127.0.0.1とかに置き換えて読んだときに文脈がおかしくないかを見てください。 PS.勉強になるでしょ?

  • 78tch
  • ベストアンサー率31% (50/157)
回答No.6

$finddir = "../a/"; $findurl = "http://127.0.0.1/a"; か $finddir = "../"; $findurl = "http://127.0.0.1"; かのどっちかにすればいいと思います。お積りは前者でしょうか。

w-inty
質問者

お礼

「両方」だったんですね!!と思いやってみたんですが… 結果はおなじく。。。。

  • 78tch
  • ベストアンサー率31% (50/157)
回答No.5

本が今手元にないのでわかりませんが、たぶん $finddir = "../a/"; とするんじゃないかと。 aやsearchをおいてあるところが/home/www/html/ とかであれば、 $finddir = "/home/www/html/a/"; とすると絶対パスで指定したことになります。

w-inty
質問者

お礼

回答ありがとうございます。 $findurlの方ではなく$finddirの方にaをいれるんですね。 # 対象ディレクトリ # → / からのフルパスで指定もよい $finddir = "../a/"; # 上記「対象ディレクトリ」のURL # → 最後は / で閉じない $findurl = "http://127.0.0.1"; としてみましたが、やはり検索結果は「5件」なんですが、ページ数がいやというほど出てきてしまいます…。 うーんなぜでしょうか…。

  • 78tch
  • ベストアンサー率31% (50/157)
回答No.4

# → / からのフルパスで指定もよい というKENTさんのコメントの意味をよく考えてください。 相対パスで./***とすれば、相対的な位置関係さえ変えずに配置してやれば、どこに持っていっても変える必要はありません。

w-inty
質問者

お礼

回答ありがとうございます。 とりあえず設定を以下のように変更してみました。 http://127.0.0.1     ├ search     │  └wfind.cgi★     └ a(この中にいろいろなhtmlファイルなどが入ってます)    ★が検索cgi # 対象ディレクトリ # → / からのフルパスで指定もよい $finddir = ".."; # 上記「対象ディレクトリ」のURL # → 最後は / で閉じない $findurl = "http://127.0.0.1"; として、検索を実行したところ、検索ヒット数が5件と、それっぽい数字が出たんですが、 ページ数が恐ろしいことに… 1万ページとかでちゃいました。 途中でストップさせたんですが、どんどん続きそうな勢いでした。 これはフォルダの指定など間違ってますか? 件数がそれなりだったのであってるのかなぁ?と思ったりしたんですが…

  • 78tch
  • ベストアンサー率31% (50/157)
回答No.3

がんばってますね。とりあえず、 $findurl = "http://www.***"; ではなく、 $findurl = "./***"; ですかね。テスト環境と本番ではさらに変える必要があるでしょう。 Webサーバーはルートディレクトリをさらけ出しているわけじゃありません。たとえば/home/www/html/というフォルダが格納場所であれば、 http://www.***/home/www/html/ ではなく http://www.***/ とすると /home/www/html/ の中を見にいくようになっています。 ちなみに他人のサイトを検索することは簡単にはできないですよ。この場合、ローカルから自分のWebサイトを見るのも同様に簡単にはできないです。

w-inty
質問者

お礼

回答ありがとうございます。 #2でも書きましたが、CGIファイル→ローカルの中 検索したいもの→Web上 という場合は他人の場所を見に行ってるようなもんですもんね。 それにさきほど気づいて「これは無理か!?」と…。 ローカル環境でとりあえずサーバー上のデータをいくつかCGIフォルダの方へコピーしてみて、 動いたらWEB上に持っていくしかないですかね~。

  • feininger
  • ベストアンサー率41% (74/180)
回答No.2

あ!なんか文章が間違っている。訂正しますね。 w-intyさんが行おうとしているのは後者のようですが、そのPerlスクリプトは2に対応していますか? $finddir というのはディレクトリ指定(/cgi-bin/***など)のための変数だと思われます。 なので http:// という指定は許されていないのではないでしょうか。

w-inty
質問者

お礼

回答ありがとうございます。 なんとなくおっしゃってることが掴めました。だとするとこれはダメですよね。 では、 CGIファイル→ローカルの中 検索したいもの→Web上 という場合はどのように記述したら言いのでしょうか? それとも「自分のサイト内の検索」だから、上記のようなことは実現できないのでしょうか?

関連するQ&A

  • サイト内検索の検索結果

    現在、とほほのWWW入門(http://tohoho.wakusei.ne.jp/www.htm) というサイトで見つけたフリーのCGIを使ってサイト内検索機能を設置しました。 キーワードを入力して検索結果が出るところまでは上手くいったのですが、検索されたページのリンク先アドレスの途中に/html/が入ってしまい、ページが表示されません。 ちなみに以下のようにファイルを置いてます。 -------------------------------------------- ├cgi-bin | └wsrch313 |    └wwwsrch.cgi ├html | └検索対象のフォルダ | └logs -------------------------------------------- 上記のものを見てもわかると思いますが、 cgiのファイルはcgi-binフォルダ htmlのファイルはhtmlフォルダに入れています。 cgiファイルの検索対象を指定する部分には ../../html/検索対象フォルダ と入力していて、上記のもの以外では 検索結果が出ません。(ちなみにhttp://www~というフォルダ指定は出来ないみたいです。) こういった場合どのように検索対象フォルダを指定すればいいのでしょうか。ご教授お願いします。

    • ベストアンサー
    • CGI
  • サイト内検索CGIの仕組みってどんなもの?

    自作サイト内の検索用のcgiを作成したいのですが、 さっぱりしくみがわかりません。 1.検索するキーワードを入力      ↓ 2.1で入力されたキーワードをもとに検索を行う というような流れはわかるんですが、2の中身がどのようにかいていいのか…。 データの送受信程度のことはできるんですが。。。 フリーのプログラムではなく、自分で作成したいんです。 よろしくお願いします。

    • ベストアンサー
    • CGI
  • CGIが動かないのですが。

    自宅マシンWWWサーバ化計画 http://www.kent-web.com/www/anhttpd/www1.html このサイトを参考にしているのですが、 HTMLファイルは開くのですが、 CGIは開けません。 PerlのインストールはC:\perlで、 ホームページ用のフォルダはC:\WWW\homeです。 この中にindex.htmlとhello.cgiを入れて、 127.0.0.1でhtmlファイルは開きますが、 127.0.0.1/hello.cgiでhello.cgiは開けませんでした。 pathが通ってないのでしょうか? よろしくお願いします。

  • perl cgiでサ-バ内検索

    perl cgiで 自分のサ-バ内に置いてある*.c,*.h等の ソ-スファイル内のkeyword検索(文字列等)の できる無料perl cgiを探しています。 URLの検索するcgiは、多数見つかったのですが、 デ-タ検索が見つかりません。 どなたか教えて下さい。

  • CGIを使えないサイトでのキーワード検索

    ホームページに検索機能をつけたいと考います。 自分で用意したキーワードの中から選択させるような方法で、ページ毎にキーワードを決めて、自分のサイト内の検索ができるようにしたいです。 ホームページはCGIを使用が不可のサイトなのですが、CGI等を使わず、キーワード検索を作成するにはどうしたら良いでしょうか? ご存じでしたら教えて頂けませんでしょうか?

    • 締切済み
    • CGI
  • CGI timeoutって? IISでのcgi設定

    すみません質問させてください。 今、XPでIISをインストールしてCGIが動くようにしてるんですが うまくいきません。 http://localhost/hello.cgi というurlで実行できると思うんですが、 いつまでも読み込んでるだけで、実行されない感じです。 CGI timeoutといわれます。 実行するCGIはHELLOと表示する単純なものです。 また、.cgiファイルは実行プログラムをC:\perl\bin\perl.exeに 指定しています。 IISでは、規定のWEBサイトのプロパティ>ホームディレクトリの 「構成」で.cgiの実行ファイルをC:\perl\bin\perl.exeに指定しています。 とりあえずやるだけやったと思ってるんですが、うまくいかないのはどうしてでしょう。 よろしくお願いします。

    • 締切済み
    • CGI
  • サイト内のファイル検索

    サイト内のファイルを検索できるcgiを探しています。 ページ内の文字列に対しての検索ではなく、ファイルそのものの検索ができるようにしたいのです。 ページ内にテキストとしてのキーワードがなく、検索対象になるページ数も多いので、どうして良いのか困っています。 例えば「HPの閲覧者からは見えないように、各ページにキーワードをMETAタグのように埋め込んで検索する」もしくは「簡易データベースを作る」という方法になるのでしょうか? もしくはCGIだけでなく、Java Scriptでもできるのでしょうか? ちなみに検索の対象になるファイルは500ページを越えています。 CGI初心者が設置するには難しいのかもしれませんが、どなたかご教授をお願いします。 また、参考になりそうなHPがありましたら、教えていただけないでしょうか? よろしくお願いします。

    • 締切済み
    • CGI
  • KENTさんの検索エンジンCGIで…

    "Net Cruiser"というKENTさんの検索エンジンCGIを使っています。現在は特に改造する事無く使っているのですが、デフォルトだと新着サイトとオススメサイトの2種類しかアイコンが使えません。 これを、例えば"更新しましたアイコン"や"只今メンテナンス中アイコン"などという様に、アイコンを増やす事ができたらなぁ…と思います。 可能であればどこをどの様に書き換えればいいのかを教えて下さい。 また、自分で登録するタイプにしているのですが、最初の方にいいサイトを登録してしまったので、検索結果が新しい順に表示されてしまうと、いいサイト程検索の後の方に来る様になってしまいました。 検索した時に、推奨サイトが最初の方に表示される様にする事は可能ですか? どちらか片方の質問の回答でもかまいませんのでお願いします。

    • 締切済み
    • CGI
  • サイト内検索cgiの修正について

    http://www.kent-web.com/cgi/wfinder.cgi を使用しています。 ですが、これのキーワードボックスを使うのではなく、FLASHで作成したテキストボックスとボタンを使用して 検索を行いたいのです。 <FORM ACTION="$script" METHOD="POST"> <INPUT TYPE=TEXT NAME=word STYLE="BORDER-STYLE:SOLID; BORDER-COLOR:GRAY; BORDER-WIDTH:1;" SIZE=40 VALUE="$in{'word'}"> <INPUT TYPE=SUBMIT STYLE="BORDER-STYLE:SOLID; BORDER-COLOR:GRAY; BACKGROUND-COLOR:SILVER; BORDER-WIDTH:1;" VALUE="検索"> <BR><BR> <B>表\示件数</B> <SELECT NAME="view"> として、テキストボックスに、FLASHのテキストボックスからデータを入れることはできましたが、この後、「検索」ボタンを押さなくてはなりません。 そうではなく、FLASHの検索ボタンをおしたら検索結果が出るようにしたいのです。 上記のcgiファイルをどのように変更すればいいのでしょうか?

    • ベストアンサー
    • CGI
  • KENTの夢カウンタ設置法について教えてください

    こんにちは。 HPのカウンタをCGIで付けたいな、と思いKENTから夢カウンタを借りてきて組み立て中です…が、CGIについてはてんで初心者なので、分からないことだらけで困っています。 KENTの『夢カウンタの設置法』というページから、以下の点について詳しく教えてください。 #!/usr/local/bin/perl (プロバイダで定められたPerlへのパスを指定します) →プロバイダで定められたPerlへのパスって何なのでしょうか?また、何をどのように設置するのでしょうか??そもそも、どうやって調べるんですか??HPのスペースはcoolonlineを借りてます。 よろしくお願いします…

    • 締切済み
    • CGI

専門家に質問してみよう