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が引っ掛るべきじゃないでしょうか?これを説明できる方、いらっしゃいますか?どんなことでも結構なんで意見ください。

このQ&Aに関連する最新のQ&A

A 回答 (7件)

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は所詮「単語検索」ですからデータ内の
単語と、入力された単語が異なる、と認識されたらば結果としては
引っかかりません。

こんな感じでよろしいでしょうか?
    • good
    • 0
この回答へのお礼

ありがとうございます。
4に関しては仕方がないのですね。

あと「フレーズクエリ」で検索にするにはどうすればいいのですか?IDQファイルの
CiRestriction=%CiRestriction%
の部分を変えるのですか?

お礼日時:2001/07/17 13:18

私の理解が違っていたようですね。



ローカル(Index Serviceが走っているマシン上)の文書をリモートから
アクセスする際にPATHだとまずい、ということですよね?

リモート(Index Serviceではないマシン)の文書をアクセスする
という意味かと思っていました。

で、それならば、ローカルのフォルダを指定する時にUNC名で指定
してあげれば解決します。
ディレクトリを追加し、パスを入力する際に
\\自分のサーバー\共有
で設定してあげればリモートからもPATHアクセスできます。
リモートからみるということであれば、どのみち共有してますでしょうし。

#大分オリジナルの質問とかけ離れてしまいましたが、
#後から他の人が検索する時のことなどを考えると
#都度別のQAにしておいた方が良いように思います・・・。
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/07/19 16:28

まず、URLエンコードですが、


<%EscapeURL vpath%> になってないですか?
vpathにしろpathにしろエンコードしたくなければEscapeURLを外してください

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

URLエンコードのほうはうまくいきました。
ありがとうございます。

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

お礼日時:2001/07/19 13:43

ファイル名もインデキシングされています。


@Filename = test.txt
#Filename *.txt
などで検索できます。
その他、ファイルの作成日検索などなどヘルプに詳しく出ていると思います。
(少なくともNT4のIndex Serviceにはヘルプがついています)

ただし、<Phrase></Phrase>内では使えませんので、今回の環境で
実現するためには別途フォームを用意してあげてください。
    • good
    • 0
この回答へのお礼

ありがとうございました。W2KのIndex Serviceヘルプには以下の書き方が載ってました。

ファイル名で検索
CiRestriction={prop name=filename}%phrase%{/prop}

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

お礼日時:2001/07/18 20:09

JavaScriptを使った表示、いいアイデアだと思います。


私も今度利用させてもらおうかと思います。

VBSやJavaSciptに詳しい方だともっとスマートな方法が
思い浮かぶのかもしれませんが、私はそんなに知見がないので
holydevilさん以上のことは思いつきません。。。
すいません。
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/07/18 15:07

申し訳ないですが、VBScriptよくわからないです。



その代わりといっては何ですが、当方でやっている方法をご紹介します。

最初のフォーム(.htm)をサブミットする時に、JavaScriptで
CiRestictionの値を隠しフォームにコピーしておき、
その値を.htxの表示の際に使用しています。
    • good
    • 0
この回答へのお礼

どうも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>
にしました。すごく強引なやりかたであまりスマートではないですが、一応表示はうまくいきました。このやり方にご意見いただければと思います。

お礼日時:2001/07/17 20:53

CiRestriction=%CiRestriction% を


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

ありがとうございます。うまくいったんですが、おっしゃる通り{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%>" を満たしています。

これって間違ってます?結果は
"" を満たしています。
ってかんじで何も入っていない状態になります。

お礼日時:2001/07/17 17:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング

おすすめ情報