現在オフラインです。再接続するためにインターネットの接続を待っています

Visual C# .NET を使用して ASP.NET アプリケーションでインデックス サービスのカタログにクエリを行う方法

Microsoft Visual Basic .NET については、次の資料を参照してください。820105
概要
この資料では、インデックス サービスのカタログの作成方法について順を追って説明します。また、ASP.NET Web アプリケーションを使用してインデックス サービスのカタログにクエリを実行する方法についても説明します。

先頭に戻る

テスト フォルダの作成

  1. コンピュータの C ドライブに新しいフォルダを作成します。そのフォルダに myCatalogFolder という名前を付けます。
  2. メモ帳などのテキスト エディタを起動して、空のドキュメントに次のテキストを貼り付けます。
    これはインデックス サーバーのクエリをテストするためのテスト ドキュメントで、このファイル名は IndexText.txt です。
  3. ファイルを C:\myCatalogFolder\IndexText.txt として保存します。
先頭に戻る

インデックス サービスのカタログの作成

  1. [スタート] ボタンをクリックし、[ファイル名を指定して実行] をクリックします。compmgmt.msc と入力し、[OK] をクリックします。
  2. [サービスとアプリケーション] を展開します。
  3. [インデックス サービス] を右クリックし、[新規作成] をポイントし、[カタログ] をクリックします。
  4. [名前] ボックスに、TestCatalog と入力します。
  5. [参照] をクリックし、カタログを格納するフォルダを指定し、[OK] を 2 回クリックします。
  6. [新しく作成されたカタログ] の下に以下のメッセージが表示されます。
    インデックス サービスを再開するまでカタログはオフラインです。
    [OK] をクリックします。
  7. [インデックス サービス] を右クリックし、[停止] をクリックして、インデックス サービスを停止します。
  8. [インデックス サービス] を右クリックし、[開始] をクリックして、インデックス サービスを再開します。
先頭に戻る

カタログのスコープの定義

新しいカタログの作成後、カタログのスコープに含めるフォルダを追加します。スコープは、カタログに含める一連のフォルダおよびカタログから除外する一連のフォルダです。スコープにより、インデックスに含めるコンテンツおよびインデックスから除外するコンテンツが定義されます。各フォルダを含めるか除外すると、それぞれのサブフォルダもすべて含まれるかまたは除外されます。
  1. [TestCatalog] (「テスト フォルダの作成」で作成したカタログ) をダブルクリックします。
  2. [ディレクトリ] を右クリックし、[新規作成] をポイントし、[ディレクトリ] をクリックします。
  3. [参照] をクリックし、追加するフォルダ (C:\myCatalogFolder\) に移動してそのフォルダをクリックし、[OK] をクリックします。

    : [インデックスに含めますか?] で、[はい] をクリックし、[OK] をクリックします。
先頭に戻る

ASP.NET Web アプリケーションの作成

  1. Microsoft Visual Studio .NET を起動します。
  2. Visual C# .NET を使用して、新しい ASP.NET Web アプリケーション プロジェクトを作成します。プロジェクトに IndexQueryApp という名前を付けます。デフォルトで、WebForm1.aspx が作成されます。
  3. デザイン ビューで [WebForm1] を右クリックし、[HTML ソースの表示] をクリックします。
  4. 既存の HTML コードを次のサンプル コードで置き換えます。
    <%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="IndexQueryApp.WebForm1" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" ><HTML>   <HEAD>      <title>WebForm3</title>      <meta name="GENERATOR" Content="Microsoft Visual Studio 7.0">      <meta name="CODE_LANGUAGE" Content="C#">      <meta name="vs_defaultClientScript" content="JavaScript">      <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">   </HEAD>   <body MS_POSITIONING="GridLayout">      <form id="WebForm3" method="post" runat="server">         <asp:TextBox id="TextBox1" style="Z-INDEX: 101; LEFT: 90px; POSITION: absolute; TOP: 136px" runat="server"></asp:TextBox>         <asp:DataGrid id="DataGrid1" style="Z-INDEX: 102; LEFT: 328px; POSITION: absolute; TOP: 138px" runat="server"></asp:DataGrid>         <asp:Button id="Button1" style="Z-INDEX: 103; LEFT: 92px; POSITION: absolute; TOP: 199px" runat="server" Text="Button"></asp:Button>      </form>   </body></HTML>
  5. ソリューション エクスプローラで、[WebForm1.aspx] を右クリックし、[コードの表示] をクリックします。既存のコードを次のサンプル コードで置き換えます。
    using System;using System.Data;namespace IndexQueryApp{   public class WebForm1 : System.Web.UI.Page   {      protected System.Web.UI.WebControls.TextBox TextBox1;      protected System.Web.UI.WebControls.DataGrid DataGrid1;      protected System.Web.UI.WebControls.Button Button1;   		private void Page_Load(object sender, System.EventArgs e)		{			// Put user code to initialize the page here.		}		#region Web Form Designer generated code		override protected void OnInit(EventArgs e)		{			//			// CODEGEN: The ASP.NET Web Form Designer requires this call.			//			InitializeComponent();			base.OnInit(e);		}				/// <summary>		/// Required method for Designer support - do not modify		/// the contents of this method by using the code editor.		/// </summary>		private void InitializeComponent()		{                                  this.Button1.Click += new System.EventHandler(this.Button1_Click);                             this.Load += new System.EventHandler(this.Page_Load);                          }		#endregion      private void Button1_Click(object sender, System.EventArgs e)      {         // Catalog Name         string strCatalog = "TestCatalog";         string strQuery="";         strQuery = "Select DocTitle,Filename,Size,PATH,URL from Scope()  where FREETEXT('" +TextBox1.Text+ "')";          // TextBox1.Text is the word that you type in the text box to query by using Indexing Service.         string connstring = "Provider=MSIDXS.1;Integrated Security .='';Data Source="+strCatalog;         System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(connstring);               conn.Open();         System.Data.OleDb.OleDbDataAdapter cmd = new System.Data.OleDb.OleDbDataAdapter(strQuery, conn);		         System.Data.DataSet testDataSet = new System.Data.DataSet();		         cmd.Fill(testDataSet, "SearchResults");         DataView source = new DataView(testDataSet.Tables[0]);         DataGrid1.DataSource = source;         DataGrid1.DataBind();      }       }}
  6. [ビルド] メニューの [ソリューションのビルド] をクリックします。
先頭に戻る

アプリケーションの実行

  1. [デバッグ] メニューの [開始] をクリックして、アプリケーションを実行します。
  2. テキスト ボックスにドキュメントというクエリ文字列を入力します (IndexText.txt ファイルに含まれている任意の文字列を入力できます)。
  3. [Button] をクリックします。データ グリッドが表示され、IndexText.txt ファイルからのクエリ結果が含まれていることを確認します。
先頭に戻る

トラブルシューティング

インデックスの構築を待つ必要がある

インデックス サービスは、TestCatalog を自動的に処理し、インデックス用の語句の一覧を作成します。サンプル コードを実行したとき、結果の表示に予想よりも時間がかかることがあります。これは、インデックス サービスがインデックスを構築するのにある程度の時間が必要なためです。

インデックスの状態を確認するには、コンピュータの管理 MMC スナップインを起動し、左側のウィンドウの [インデックス サービス] をクリックして、TestCatalog の [ワードリスト] の値が 0 より大きいことを確認します。[ワードリスト] の値が 0 の場合、インデックスの一覧が構築されるのを待ちます。

インデックスのデータが破損している可能性がある

インデックスへのクエリ時に期待した検索結果が返されない場合は、インデックスのデータが壊れている可能性があります。この問題のトラブルシューティングを行うには、インデックス サービスを停止してから再開し、すべてのドキュメントのインデックスを再作成します。この操作を行うには、以下の手順を実行します。
  1. [スタート] ボタンをクリックし、[設定] をポイントし、[コントロール パネル] をクリックします。
  2. [管理ツール] をダブルクリックし、[コンピュータの管理] をダブルクリックします。
  3. コンソール ツリーの [サービスとアプリケーション] をダブルクリックします。
  4. [インデックス サービス] を右クリックし、[停止] をクリックします。
  5. [インデックス サービス] を再度右クリックし、[開始] をクリックします。
先頭に戻る
関連情報
インデックス サービスの詳細については、次のマイクロソフト Web サイトを参照してください。関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
311521 [HOWTO] Microsoft Index Server を使用して ASP.NET コンテンツのインデックスを作成する方法
関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
308202 インデックス用カタログを作成および構成する方法


先頭に戻る
プロパティ

文書番号:820983 - 最終更新日: 01/12/2007 06:30:03 - リビジョン: 3.3

Microsoft ASP.NET 1.1, Microsoft ASP.NET 1.0, Microsoft Visual C# .NET 2003 Standard Edition, Microsoft Visual C# .NET 2002 Standard Edition, Microsoft Windows Indexing Service 2.0

  • kbquery kbservice kbdatabinding kbdataadapter kbwebserver kbwebforms kbhowtomaster KB820983
フィードバック