如何使用 ASP.NET 应用程序以使用 Visual C#.NET 来查询索引服务目录

创建一个测试文件夹

  1. 在您的计算机的 C 驱动器上创建一个新文件夹。名称文件夹TestIndexService,目录下建文件夹为0,然后添加txt文件并写上内容。

创建索引服务目录

  1. 单击开始,单击运行,键入compmgmt.msc,,然后单击确定

  2. 展开服务和应用程序

  3. 用鼠标右键单击索引服务,指向新建,然后单击目录

  4. 名称文本框中,键入TestCatalog。

  5. 单击浏览,找到您希望放置目录(例如C:\TestIndexService),的文件夹,然后单击确定两次。

  6. 创建新目录,您会收到以下消息:索引服务重新启动之前,编录将保持离线单击确定

  7. 右键单击索引服务,然后单击停止以停止索引服务。

  8. 右键单击索引服务,然后单击启动以重新启动索引服务。

定义编录的范围

创建新编录后,添加您想要包括在编录的范围中的文件夹。作用域是包含在目录中,并从编录中排除的文件夹组。范围定义的内容包含在索引中并从索引中排除。包含或排除的每个文件夹中,为其所有子文件夹也要包含或排除。

  1. 双击TestCatalog (您在"创建测试文件夹"一节中创建的目录)。

  2. 用鼠标右键单击目录,指向新建,然后单击目录

  3. 单击浏览,然后单击您想要添加 (C:\TestIndexService\0),该文件夹,然后单击确定

    注意:在下,包含在索引中的?,单击

创建 ASP.NET Web 应用程序

1.启动 Microsoft Visual Studio.NET。

2.使用 Visual C#.NET 创建一个新的ASP.NET Web 应用程序项目。IndexQueryApp为项目命名。默认情况下,会创建 Default.aspx。

3.在设计视图中,用鼠标右键单击Default,然后单击查看 HTML 源

4.现有的 HTML 代码替换为下面的代码示例:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<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" OnClick="Button1_Click"></asp:Button>
    </form>
</body>
</html>

5.在解决方案资源管理器中,用鼠标右键单击Default,然后单击查看代码现有代码替换为下面的代码示例:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        // Catalog Name
        string strCatalog = "TestCatalog";
        string strQuery = "";
        
        //strQuery = "Select DocTitle,Filename,Size,PATH,URL from Scope()  where FREETEXT('" + TextBox1.Text + "')";
        strQuery = "Select DocTitle,Filename,Size,PATH,URL from Scope()  where CONTAINS(Contents,'" + 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");
        System.Data.DataView source = new System.Data.DataView(testDataSet.Tables[0]);
        DataGrid1.DataSource = source;
        DataGrid1.DataBind();
    }
}

6.在生成菜单中,单击生成解决方案

运行应用程序

  1. 调试菜单上,单击开始运行该应用程序。

  2. 在文本框中键入查询的 word文档。(您可以键入txt文件中的任何单词。

  3. 单击按钮请注意数据网格出现,其中包含txt文件的查询结果。

解决问题

等待要生成的索引

索引服务会自动处理 TestCatalog,并准备进行索引的单词列表。在运行示例代码时,可能看不到结果,因为索引服务需要一些时间来建立索引的快速。

若要验证索引的状态,请先单击计算机管理管理单元的右窗格中,索引服务然后验证 TestCatalog 的单词列表值是否大于零。如果单词列表值为零,等待以生成列表的索引。

索引数据可能已损坏

如果搜索没有返回预期的搜索结果,查询索引时,索引数据可能已损坏。若要解决此问题,请停止并重新启动索引服务,以重新编制所有文档的都索引。若要执行此操作,请按照下列步骤操作:

  1. 单击开始,指向设置,然后单击控制面板

  2. 双击管理工具,然后双击计算机管理

  3. 在控制台树中,双击服务和应用程序

  4. 右键单击索引服务,然后单击停止

  5. 再次右键单击索引服务,然后单击开始

原文可参考 http://support.microsoft.com/kb/820983/zh-cn

你可能感兴趣的:(索引,全文搜索,编录,索引服务)