MS IndexServerの検索結果について

このQ&Aのポイント
  • MS IndexServerの検索結果について説明します。検索キーワードによって検索結果が異なる場合があります。
  • 例えば、キーワード「今日は晴れ」で検索した場合、すべてのファイルが検索結果に表示されます。
  • 「今日」というキーワードで検索すると、2つのファイルが表示されます。
回答を見る
  • ベストアンサー

MS IndexServerの検索結果について

IndexServerをテスト構築してファイルサーバを検索しているんですが、検索結果にどうも納得いかないというか、わからない部分があります。例えば以下のように 今日は晴れ・・・・A 今日は雨・・・・・B 昨日は晴れ・・・・C という文章が入った3つ(A,B,C)のファイルを検索します 1.“今日は晴れ”というキーワードで検索した場合 検索結果A,B,Cすべて。 2.“今日”というキーワードで検索した場合 検索結果A,Bの2件 3.“晴れ”というキーワードで検索した場合 検索結果A,Cの2件 4.“晴”というキーワードで検索した場合 検索結果0件 という結果になりました。 2と3の結果は納得いきます。でも1.は“今日”と“晴れ”のOR検索をしていますよね。それと、4.に関しては通常ならA,Cが引っ掛るべきじゃないでしょうか?これを説明できる方、いらっしゃいますか?どんなことでも結構なんで意見ください。

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

  • ベストアンサー
  • shibarou
  • ベストアンサー率88% (15/17)
回答No.1

Windows 2000のIndex Serviceを使用されていて、カタログのクエリから 検索を行っていると仮定して回答いたします。 Windows 2000のIndex Serviceで標準でセットアップされるカタログの クエリでは「フリーテキストクエリ」が行われます。 これは単純なAND検索やOR検索ではなく、クエリ中に含まれる単語に 意味が近いものを順に返すクエリです。 詳しくはヘルプに掲載されています。 ・・・と、いうことになっていますが、実際はほとんどワードブレイクした 後の OR 検索になります(特に日本語では)。 いずれにせよ、Windows 2000 Index Serviceのカタログのクエリに おいては1は正しい結果となります。 ちなみに、同じ検索(1)をWindows NT 4.0のIndex Server付属のサンプル クエリで行うと、Aしか引っかかりませんが、これはNT4.0の方は 「フレーズクエリ」で検索を行っているからです。 これと同じことをWindows 2000で実現したい場合は自分で クエリページを作成し「フリーテキストクエリ」ではなく 「フレーズクエリ」を行うように変更してやる必要があります。 4に関しては 「晴れ」という1つの単語としてIndex Serviceが認識しているためだと 思います。Index Serviceは所詮「単語検索」ですからデータ内の 単語と、入力された単語が異なる、と認識されたらば結果としては 引っかかりません。 こんな感じでよろしいでしょうか?

holydevil
質問者

お礼

ありがとうございます。 4に関しては仕方がないのですね。 あと「フレーズクエリ」で検索にするにはどうすればいいのですか?IDQファイルの CiRestriction=%CiRestriction% の部分を変えるのですか?

その他の回答 (6)

  • shibarou
  • ベストアンサー率88% (15/17)
回答No.7

私の理解が違っていたようですね。 ローカル(Index Serviceが走っているマシン上)の文書をリモートから アクセスする際にPATHだとまずい、ということですよね? リモート(Index Serviceではないマシン)の文書をアクセスする という意味かと思っていました。 で、それならば、ローカルのフォルダを指定する時にUNC名で指定 してあげれば解決します。 ディレクトリを追加し、パスを入力する際に \\自分のサーバー\共有 で設定してあげればリモートからもPATHアクセスできます。 リモートからみるということであれば、どのみち共有してますでしょうし。 #大分オリジナルの質問とかけ離れてしまいましたが、 #後から他の人が検索する時のことなどを考えると #都度別のQAにしておいた方が良いように思います・・・。

holydevil
質問者

お礼

そうですね。もう少しお聞きしたいので別の質問でさせていただきます。 ご丁寧に、大変ありがとうございました。

  • shibarou
  • ベストアンサー率88% (15/17)
回答No.6

まず、URLエンコードですが、 <%EscapeURL vpath%> になってないですか? vpathにしろpathにしろエンコードしたくなければEscapeURLを外してください 次に、リモートファイルの検索ですが、 PATHで問題なくアクセスできるはずです。 ディレクトリの追加でパスを\\Server\Shareで指定し、 適切なアカウントを入力してしばらく待てば出来上がりです。 PATHの値はちゃんと\\Server\Share\Filenameで取ってきてくれます。 間違った(アクセス権のない)アカウントを入力した場合当然 検索対象とはなりませんが、それはイベントビューアーをみると CiDaemonは....にログオンできませんでした。と ログが残るのでその場合は適切なアカウントに変更してください。

holydevil
質問者

お礼

URLエンコードのほうはうまくいきました。 ありがとうございます。 でも<%path%>はうまくいきません。 <a href="\\servername\share\<%filename%>"><%filename%></a> とした場合はうまくいきますが、shareフォルダの中にサブディレクトリが存在した場合もちろんリンクしません。 <%path%>をつかったら、ドライブ名からのパスを取ってきてしまいますよね?

  • shibarou
  • ベストアンサー率88% (15/17)
回答No.5

ファイル名もインデキシングされています。 @Filename = test.txt #Filename *.txt などで検索できます。 その他、ファイルの作成日検索などなどヘルプに詳しく出ていると思います。 (少なくともNT4のIndex Serviceにはヘルプがついています) ただし、<Phrase></Phrase>内では使えませんので、今回の環境で 実現するためには別途フォームを用意してあげてください。

holydevil
質問者

お礼

ありがとうございました。W2KのIndex Serviceヘルプには以下の書き方が載ってました。 ファイル名で検索 CiRestriction={prop name=filename}%phrase%{/prop} にするとファイル名検索できました。 ただ、QNo.101635で質問させていただいていた内容で一部問題が発生しました。VPATHをPATHに変更した場合、パスの情報はc:\aaa\bbb\ccc.docといった情報を取ってきます。 つまり、ローカルマシンでないと動かないリンクされないということです。仕方がないのでVPATHに戻して、検索対象をサイトの一部にしたんですが、こらでも問題発生!!。フォルダ名にスペースなどが入っているとURLエンコードされてしまいリンクされない。 shibarouはどうされてます?

  • shibarou
  • ベストアンサー率88% (15/17)
回答No.4

JavaScriptを使った表示、いいアイデアだと思います。 私も今度利用させてもらおうかと思います。 VBSやJavaSciptに詳しい方だともっとスマートな方法が 思い浮かぶのかもしれませんが、私はそんなに知見がないので holydevilさん以上のことは思いつきません。。。 すいません。

holydevil
質問者

お礼

是非利用してみてください。 ちょっと話が変わりますが IndexServerってファイル名はインデキシングされないのでしょうか?おそらく標準のままだとされていませんよね。ファイル名で検索はやっぱり無理ですか?

  • shibarou
  • ベストアンサー率88% (15/17)
回答No.3

申し訳ないですが、VBScriptよくわからないです。 その代わりといっては何ですが、当方でやっている方法をご紹介します。 最初のフォーム(.htm)をサブミットする時に、JavaScriptで CiRestictionの値を隠しフォームにコピーしておき、 その値を.htxの表示の際に使用しています。

holydevil
質問者

お礼

どうもVBでうまくいかないので私もjavascriptを使ってみました。以下のようにしました。HTXファイルのヘッダに <script Language="javascript"> msg="<%CiRestriction%>"; count=msg.length; st=msg.substring(8,(count-9)); </script> を追加し、body部分の <%CiRestriction%> をすべて <script Language="javascript">document.write(st)</script> にしました。すごく強引なやりかたであまりスマートではないですが、一応表示はうまくいきました。このやり方にご意見いただければと思います。

  • shibarou
  • ベストアンサー率88% (15/17)
回答No.2

CiRestriction=%CiRestriction% を CiRestriction={phrase}%CiRestriction%{/phrase} にしてみてください。 もしかすると、結果表示とかも{phrase}が含まれて出てきて しまうかもしれませんが、その辺は変数をうまく回すなどして 工夫してみてください。

holydevil
質問者

お礼

ありがとうございます。うまくいったんですが、おっしゃる通り{phrase}が出ちゃいます。HTXファイルでこんな記述して試みたんですが・・・ 初めの8文字とあとの9文字を取り除く式で結果をstに代入している式です。(VBです)  <%Dim count AS Double%>  <%Dim CiRestriction AS String%>  <%Dim st AS String%>  <%count=Len(CiRestriction)%>  <%st=Mid(CiRestriction,9,(count-17))%>  <%CiMatchedRecordCount%> 個がクエリー "<%st%>" を満たしています。 これって間違ってます?結果は "" を満たしています。 ってかんじで何も入っていない状態になります。

関連するQ&A

  • Yahooの検索結果に表示されなくなりました

    Yahooの検索結果に昨日まで表示されていサイトが、 今日同じキーワードで検索すると、表示されません。 昨日まで 「A」というキーワードだと8番目に 「A+B」というキーワードだと6番目に そのサイトは表示されていた 今日は 「A」というキーワードだと200番目まで見たが表示されない。 「A+B」というキーワードだと6番目に表示される。 更新は昨日、 問い合わせ先のメールアドレスを記載しただけです。 どういった原因が考えられるのでしょうか?

  • 検索結果の出力方法について

    "001","Aさん","ぶどう", "001","Aさん","みかん", "001","Bさん","バナナ", "001","Bさん","イチゴ", "001","Cさん","スイカ", "001","Cさん","メロン", "002",・・・ "003",・・・ 例えば上記の様な検索用のログファイルがあり、”001”で検索した場合、今のところ極々単純に ━━━━━━━ │Aさん|ぶどう| ━━━━━━━ |Aさん|みかん| ━━━━━━━ |Bさん|バナナ| ━━━━━━━ |Bさん|イチゴ| ━━━━━━━ |Cさん|スイカ| ━━━━━━━ |Cさん|メロン| ━━━━━━━ ↑という感じで結果を出力させているのですが、 これを ━━━━━━━ |Aさん|ぶどう| |    |みかん| ━━━━━━━ |Bさん|バナナ| |    |イチゴ| ━━━━━━━ |Cさん|スイカ| |    |メロン| ━━━━━━━ 上記のように、同じ名前の結果が複数ある場合、それを統一して結果を表示させたいと考え、いろいろと悪戦苦闘してみましたが、どうしてもうまくいきません。 ログファイルには手を加えないという事を前提に、下のテーブルのような出力に なるような、構文の書き方がありましたら、是非教えてください。

    • 締切済み
    • PHP
  • 検索結果の表示件数の制御

    CSVデータから検索キーワードを取得し、マッチしたものを全て表示することはできますが、例えば、検索結果の表示件数を5件ごとに制御(次の5件、前の5件)し、かつテーブルタグで表示する場合に、端数が出た場合(検索結果が38件だった場合に端数の3件は余計なテーブルタグが表示されない)の処理方法にかなり躓いています。 また、次の5件、前の5件のリンク文字も自動で表示したいのですが、参考になるようなサンプルコードやヒントをアドバイス下さい (1)検索キーワード $find にマッチしたものを $line 配列に代入する処理(一部省略) if($find)$result[] = $line; (2)検索結果に対する処理 echo "<div>検索結果</div>".count($result)."件<br />"; for($c = 0; $c < count($result); $c++){ list($data01,$data02,$data03,) = explode(",", $result[$c]); echo $data01; echo $data02; echo $data03; }

    • 締切済み
    • PHP
  • mysqlからの検索結果文字列を範囲指定で抽出

    mysqlからphpで呼び出し、検索結果を全文表示させていますが、検索文字の±何文字を抽出と範囲指定できるのでしょうか? 例 "今日"で検索 現在は "昨日は雨でした。今日は晴れです。" と全文呼び出し 理想は "・・・した。今日は晴れ・・・" 検索文字の±3文字を呼び出すことです。

    • 締切済み
    • PHP
  • ヤフー検索エンジンの検索のやり方(キーワードについて)

    ヤフー検索エンジンの検索のやり方(キーワードについて) A(半角スペース)B(半角スペース)C この場合は、AかつBかつCの意味ですか?それともAまたはBまたはCの意味ですか? もし、半角スペースで区切った時が、デフォルトでAND検索になるならば、 OR検索にするにはどうするんでしょうか? また A(全角スペース)B(全角スペース)C の場合は、半角スペースと違うんですかね?? 上記のことはgoogleでの検索フォームへの入力でも意味は同じですよね? ド素人なこと聞いてすいません・・・

  • 検索結果が○件以下だったら隣に○

    C1から下へずらーっと、キーワードや文章が記入されています。 このセル内のキーワードをGoogle検索して、『検索結果が○件以下だったら隣に○』 という風に分けていきたいです。 こういう作業は、マクロでできるでしょうか? どのような記述でできますか? EXCEL2016です。 よろしくお願いいたします。

  • 検索結果件数

    いつもお世話になっています。 今回は検索結果について質問があります。 ウェブサイト内でキーワードを調べる時に、検索結果件数が表示されますよね。 例えば「りんご」と検索すれば、 200件中 1〜10件目を表示と出ますよね。 しかし、「コロナ」と検索したら、検索結果件数が増えたり減ったりします。 「コロナ」だけで検索すれば、1ページ目が11725件 とカウントされますが、 2ページ目からは件数が減りました。 ※画像の赤文字で 11725件 と表示されている場所です。 また、「コロナ○」と空白を入れて検索すれば、同じキーワードなのにもかかわらず、 検索結果件数が増えていました。 ※○は空白(スペース) これは何かのバグなのでしょうか。 新型コロナのニュースが多くなってきているからなのか、更新が遅れているのでしょうか。 利用したサイト https://www.news24.jp/sp/index.html

  • 検索結果のURLの取得

    こんにちは、ExcelVBAの初心者です。 上司から検索サイトでの検索結果に出てくる上位URLをコピー&ペーストするように指示を受けたのですが、作業が大変で全然進まず困っています。 もしからた、ExcelVBAで解決できるのではと、ご相談させて頂きました。 具体的には以下のような作業を手作業でやっています。 これを自動化することは可能でしょうか? 1.エクセルに検索するキーワードがセル(A列)ごとにおさめられています。 (セルには2つのキーワードが入っていてand条件となります) 2.それをコピーしてyahooかgoogleで検索をします。 3.検索結果の上位3つまでのURLをコピーして、キーワードの右側のセルにペーストしています。(スポンサードサーチなど広告系は含みません) 【イメージです】         A            B              C     ―――――――――――――――――――――――――― 1|カメラ SONY     |________|______ 2|電子レンジ シャープ|________|______ 3|冷蔵庫 日立     |________|______             ↓         A            B              C     ―――――――――――――――――――――――――― 1|カメラ SONY     |www.sony.jp/dslr|www.sony.co.jp 2|電子レンジ シャープ|healsio.jp     |www.sharp.co.jp/sup 3|冷蔵庫 日立     |________|______ 素人で実現可能なのかも分かりませんが、もし分かる方がいらっしゃいましたら何卒お知恵をお貸しください。 どうかよろしくお願いいたします。

  • 検索

    Dディレクトリの中にあるフォルダ[A]の中に[a][b][c]・・・という名前の付いたファイルやフォルダがいっぱいあります。 (a,b,cはフォルダやエクセル、ワード、pdfなどのファイル) 質問1 フォルダやファイルの名前の一部をキーワードにして、フォルダおよびファイルを検索するにはどうしたらよいですか? (フォルダAの中だけで探したい) 質問2 各ファイルの中にある「文字」をキーワードにして検索することができますか?・・・例えば「中村一郎」とかいった文字 (フォルダAの中のフォルダ、ファイルすべてについて) 質問3 Dディレクトリの中にあるフォルダ、ファイルのすべてについて、上記の検索を行うにはどうしたらよいですか? 特別なソフトを使わず、オリジナルな手段だけでやりたいと思います。

  • googleの検索結果が異なるのはなぜ?

    現在IE10を利用しています。IE10はurl欄に検索キーワード「xxx」を 入れるとgoogleによる検索結果が表示されます。これをAとします。 IE10でwww.google.co.jpとurl欄に直接入力しgoogleにジャンプします。 そこで表示される検索テキストボックスに「xxx」と入力すると検索結果 が表示されます。これをBとします。 IEではなくfirefoxを起動し検索欄に「xxx」と入力すると検索結果が 表示されます。これをcとします。 スマホのgoogleアプリで「xxx」を検索すると検索結果が表示されます。 これをDとします。 さて、ここでおかしなことがあります。以上の検索結果の内 BCDでは、検索される我がホームページがAでは全く検索表示 されません。BCDではトップに表示されるのにAでは全く 表示されないのは何故でしょうか? ie10の閲覧キャッシュを 削除しても同じ結果です。 どなたか分かる方がいましたら教えてください。