0

初めて Windows インデックス サービスを使用しています。クエリからドキュメントタイトルとファイル名を返す必要があります。

私の質問は;

select doctitle, filename, vpath, rank, characterization from scope() where FREETEXT(Contents, '" & searchText & "') order by rank desc

フォルダーを指すだけのかなり基本的なカタログをセットアップします。私はこのコードを Web サイトから使用しています。ファイルはローカル マシン上にあり、認証は問題になりません。

私の検索は結果を返しますが、ファイル名プロパティには何もありません。doctitle は入力されていますが、他には何もありません。

ありがとう、マイク

4

2 に答える 2

1

これが回答されてから数か月が経ちましたが、現在、C# を使用して Windows Server 2008 R2 で WIS を使用しており、検索でこれに出会いました。時々私は答えにノーを取ることができないので、私はインターネットを精査してこの解決策を思いついた.

必要に応じてコードを変換できると思いますが...

サーバー マネージャーの役​​割から Windows Server 2003 ファイル サービス インデックス サービスをインストールする必要があります。

カタログ プロパティについては、継承可能な設定を無効にし、WWW サーバーを適切に設定しました。また、Characterization 列に格納する 250 文字の要約を生成しました。

カタログをセットアップするときに、Web サイトのディレクトリ (サイト ルートを含む) の特定のフォルダーを含めたり除外したりして、クエリを実行するときに、次の SQL ステートメントを使用しました。

編集:FREETEXT(Filename, '\""+q+"\"'))ファイルの名前を照会するための使用に注意してください

String fileTypes = "\".aspx\" OR \".doc*\" OR \".xls*\" OR \".ppt*\" OR \".txt\" OR \".pdf\" OR \".rtf\"";
String q = query.Text.Replace("'", "''");   

sSqlString = "SELECT Filename, DocTitle, Size, VPath, Path, Rank, Write, Contents, Characterization ";
sSqlString += "FROM SCOPE() ";
sSqlString += "WHERE (CONTAINS(Contents, '\""+q+"\"') ";
sSqlString += "OR FREETEXT(Filename, '\""+q+"\"')) ";
sSqlString += "AND CONTAINS(Filename, '"+fileTypes+"') ";
sSqlString += "ORDER BY rank DESC, write DESC";

using ステートメントを使用して接続を作成します。

using(OleDbConnection conn = new OleDbConnection("Provider=MSIDXS.1;Data Source='"+catalog+"'"))
{
    //your connection and data collection code here
}

私が遭遇した問題の 1 つは、特定のファイルタイプに関するものです。ドキュメントの作成者が MS Office 製品にドキュメント タイトルを含めていない場合、DocTitle は取得されません。PDF に認識可能なテキストがなく、ドキュメント プロパティが入力されていない場合、docTitle と Content は空になります。私の見方では、企業がファイルを 508 準拠にしないと、結果に適切に表示されないということです。

これは、私が使用している ListView テンプレートの簡単なスニペットです。

<ItemTemplate>
    <h3><a href="<%# vFilePath(Eval("Path")) %>"><%# Eval("DocTitle").ToString().Trim() == "" ? Eval("Filename").ToString().Split('.')[0] : ProperCase(Eval("DocTitle").ToString()) %></a></h3>
    <p><span style="color:#0083be;">
        <%# Request.ServerVariables["HTTP_HOST"].Length+vFilePath(Eval("Path")).Length > 100 ? (Request.ServerVariables["HTTP_HOST"]+vFilePath(Eval("Path"))).Substring(0,100)+"..." : Request.ServerVariables["HTTP_HOST"]+vFilePath(Eval("Path")) %></span><br />
        <span style="color:#4d4e53"><%# String.Format("{0:MMMM dd, yyyy}",Eval("Write")) %> - </span>
        <%# Eval("Characterization").ToString().Trim() == "" ? "..." : Eval("Characterization").ToString().Length == 250 ? 
        Eval("Characterization").ToString().Substring(0,250)+"..." : Eval("Characterization")%>
    </p>                
</ItemTemplate>

私の場合の docTitle は結果ヘッダーに使用されるため、空の場合は、その空の文字列を取得して、ファイル名から拡張子を除いたものに置き換えることができると考えました。

クエリを作成するときは、キーワードと説明を使用してメタ タグも適切に使用していることを確認してください。これと .aspx ページの静的コンテンツは、WIS によって読み取られます。Characterization を使用してコンテンツを取得していることに注意してください。

このリンクは、vb.net コードと共に W2k8 WIS をセットアップする手順を提供します。

このリンクは、クエリおよび/または表示できる多数のプロパティの優れたソースです。

于 2012-03-30T15:45:35.013 に答える
0

この記事で答えを見つけました。 http://support.microsoft.com/kb/954822

IIS 7.0 に加えられた設計変更により、Windows Server 2008 でインターネット インフォメーション サービス (IIS) Web サイトのインデックスを作成できません。

後継またはインデックス サービスは Windows Search です。 Windows サーチ ウィキ

Windows Search を使用するには、サイトを変更する必要があるようです。

于 2011-12-21T15:14:50.120 に答える