在计算机管理--索引服务目录下添加新的编录,详细方法可上网查阅。
在asp.net中使用索引服务:
public static DataTable SearchFromIndex(string keywords)
{
//HttpContext.Current.Response.Write(keywords+"<br>");
if (keywords == null || keywords.Trim() == ""||keywords.Length < 2) return new DataTable();
if (ConfigurationManager.AppSettings["IndexingServiceCatalogName"] == null) return new DataTable();
string catalogName = ConfigurationManager.AppSettings["IndexingServiceCatalogName"].ToString();
string connString = "Provider=MSIDXS.1;Integrated Security .='';Data Source=" + catalogName;
//替换全角空格符号为半角空格符号,并以空格拆分为数组
string[] keys = keywords.Replace(" "," ").Split(' ');
string sql = "SELECT Filename,Write,Path,Url,Characterization FROM SCOPE() WHERE ";
for (int i=0; i < keys.Length;i++ )
{
if (i == 0)
{
sql = sql + " CONTAINS('" + keys[i] + "')";
}
else
{
sql = sql + "AND CONTAINS('" + keys[i] + "')";
}
}
sql = sql + " ORDER BY Rank DESC";
try
{
System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(connString);
conn.Open();
System.Data.OleDb.OleDbDataAdapter cmd = new System.Data.OleDb.OleDbDataAdapter(sql, conn);
System.Data.DataSet dtSet = new System.Data.DataSet();
cmd.Fill(dtSet, "SearchResults");
if (dtSet != null)
{
DataTable dt = dtSet.Tables[0];
//新建一列存放处理过后的文件路径
dt.Columns.Add(new DataColumn("FilePath", typeof(string)));
dt.Columns.Add(new DataColumn("RedContent",typeof(string)));
for (int i = 0; i < dt.Rows.Count; i++)
{
//将绝对路径转换为相对路径
string path = dtSet.Tables[0].Rows[i]["Path"].ToString();//文件路径
path = path.ToLower().Replace(@"/", "/");
path = path.Substring(path.IndexOf("data"));
dt.Rows[i]["FilePath"] = path;
//将关键字加红显示
string redContent = dtSet.Tables[0].Rows[i]["Characterization"].ToString();
for (int j = 0; j < keys.Length;j++ )
{
dt.Rows[i]["Filename"] = dt.Rows[i]["Filename"].ToString().Replace(keys[j], "<font style='color:red;'>" + keys[j] + "</font>");
redContent = redContent.Replace(keys[j],"<font style='color:red;'>" + keys[j] + "</font>");
}
dt.Rows[i]["RedContent"] = redContent;
}
return dtSet.Tables[0];
}
else
{
return new DataTable();
}
}catch(Exception ex)
{
return new DataTable();
}
}