我知道這已經過了幾個月,因爲這已經得到了解答,但我目前在Windows Server 2008 R2上使用WIS使用WIS,並在搜索中遇到了這個問題。有時我不能拒絕回答,所以我搜索了互聯網並提出了這個解決方案。
我敢肯定,你可以將代碼轉換必要的,但...
你必須安裝在服務器管理器的角色在Windows Server 2003文件服務索引服務。
對於目錄屬性,我禁用了可繼承設置並適當地設置了WWW服務器。我還生成了250個字符摘要以存儲在特徵欄中。
當我建立了我的目錄,我包括/我的網站的目錄中排除某些文件夾(包括站點根目錄),當我問它,我用下面的SQL語句:
編輯:注使用FREETEXT(Filename, '\""+q+"\"'))
查詢文件的名稱
String fileTypes = "\".aspx\" OR \".doc*\" OR \".xls*\" OR \".ppt*\" OR \".txt\" OR \".pdf\" OR \".rtf\"";
String q = query.Text.Replace("'", "''");
sSqlString = "SELECT Filename, DocTitle, Size, VPath, Path, Rank, Write, Contents, Characterization ";
sSqlString += "FROM SCOPE() ";
sSqlString += "WHERE (CONTAINS(Contents, '\""+q+"\"') ";
sSqlString += "OR FREETEXT(Filename, '\""+q+"\"')) ";
sSqlString += "AND CONTAINS(Filename, '"+fileTypes+"') ";
sSqlString += "ORDER BY rank DESC, write DESC";
我創建一個使用using語句我的連接:
using(OleDbConnection conn = new OleDbConnection("Provider=MSIDXS.1;Data Source='"+catalog+"'"))
{
//your connection and data collection code here
}
我遇到的問題之一是某些文件類型。如果文檔創建者在其MS Office產品中沒有包含文檔標題,則不會獲得DocTitle。如果pdf中沒有任何可識別的文本並且文檔屬性未填寫,則docTitle和Content將爲空。我的看法是,如果業務不符合他們的文件508,他們將不會正確顯示在結果中。
下面是我正在使用的ListView模板的快速片段。
<ItemTemplate>
<h3><a href="<%# vFilePath(Eval("Path")) %>"><%# Eval("DocTitle").ToString().Trim() == "" ? Eval("Filename").ToString().Split('.')[0] : ProperCase(Eval("DocTitle").ToString()) %></a></h3>
<p><span style="color:#0083be;">
<%# Request.ServerVariables["HTTP_HOST"].Length+vFilePath(Eval("Path")).Length > 100 ? (Request.ServerVariables["HTTP_HOST"]+vFilePath(Eval("Path"))).Substring(0,100)+"..." : Request.ServerVariables["HTTP_HOST"]+vFilePath(Eval("Path")) %></span><br />
<span style="color:#4d4e53"><%# String.Format("{0:MMMM dd, yyyy}",Eval("Write")) %> - </span>
<%# Eval("Characterization").ToString().Trim() == "" ? "..." : Eval("Characterization").ToString().Length == 250 ?
Eval("Characterization").ToString().Substring(0,250)+"..." : Eval("Characterization")%>
</p>
</ItemTemplate>
由於docTitle在我的情況下,用於結果頭,我計算過,如果它是空的,我完全可以接受空字符串,並用文件名替換,減去推廣。
進行查詢時,請確保您還使用關鍵字和說明正確使用了您的元標記。這和.aspx頁面上的靜態內容不會被WIS讀取。您會注意到我使用Characterization來檢索內容。
link提供有關設置W2k8 WIS以及vb.net代碼的說明。
這個link是一個很好的來源,可以查詢和/或顯示大量屬性。