创建一个测试文件夹
在您的计算机的 C 驱动器上创建一个新文件夹。名称文件夹TestIndexService,目录下建文件夹为0,然后添加txt文件并写上内容。
创建索引服务目录
单击开始,单击运行,键入compmgmt.msc,,然后单击确定。
展开服务和应用程序。
用鼠标右键单击索引服务,指向新建,然后单击目录。
在名称文本框中,键入TestCatalog。
单击浏览,找到您希望放置目录(例如C:\TestIndexService),的文件夹,然后单击确定两次。
在创建新目录,您会收到以下消息:索引服务重新启动之前,编录将保持离线单击确定。
右键单击索引服务,然后单击停止以停止索引服务。
右键单击索引服务,然后单击启动以重新启动索引服务。
定义编录的范围
创建新编录后,添加您想要包括在编录的范围中的文件夹。作用域是包含在目录中,并从编录中排除的文件夹组。范围定义的内容包含在索引中并从索引中排除。包含或排除的每个文件夹中,为其所有子文件夹也要包含或排除。
双击TestCatalog (您在"创建测试文件夹"一节中创建的目录)。
用鼠标右键单击目录,指向新建,然后单击目录。
单击浏览,然后单击您想要添加 (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.在生成菜单中,单击生成解决方案。
运行应用程序
在调试菜单上,单击开始运行该应用程序。
在文本框中键入查询的 word文档。(您可以键入txt文件中的任何单词。
单击按钮。请注意数据网格出现,其中包含txt文件的查询结果。
解决问题
等待要生成的索引
索引服务会自动处理 TestCatalog,并准备进行索引的单词列表。在运行示例代码时,可能看不到结果,因为索引服务需要一些时间来建立索引的快速。
若要验证索引的状态,请先单击计算机管理管理单元的右窗格中,索引服务然后验证 TestCatalog 的单词列表值是否大于零。如果单词列表值为零,等待以生成列表的索引。
索引数据可能已损坏
如果搜索没有返回预期的搜索结果,查询索引时,索引数据可能已损坏。若要解决此问题,请停止并重新启动索引服务,以重新编制所有文档的都索引。若要执行此操作,请按照下列步骤操作:
单击开始,指向设置,然后单击控制面板。
双击管理工具,然后双击计算机管理。
在控制台树中,双击服务和应用程序。
右键单击索引服务,然后单击停止。
再次右键单击索引服务,然后单击开始。