• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:MS IndexServerの検索結果について)

MS IndexServerの検索結果について

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

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

  • ベストアンサー
  • 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

専門家に質問してみよう