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

文書翻訳 文書翻訳
文書番号: 820983 - 対象製品
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 サイトを参照してください。
http://msdn2.microsoft.com/en-us/library/ms689644.aspx
関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
311521 [HOWTO] Microsoft Index Server を使用して ASP.NET コンテンツのインデックスを作成する方法
関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
308202 インデックス用カタログを作成および構成する方法


プロパティ

文書番号: 820983 - 最終更新日: 2007年1月12日 - リビジョン: 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
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com