Windows Search サービスによるWEB検索システム

Windows Search サービスをWEBアプリケーションで検索できるプログラムを作ってみました。VBスクリプトなどのサンプルプログラム等の情報がありましたが、やはりサーバーに文書を保管し、WEBで検索するシステムが情報共有できて便利だと思います。

OS:Widows2008R2
ファイルサービス と IIS を役割追加、 Windows Search と ASP を有効


プログラムファイル名 search.asp
---------------------------------------------------------
<HTML>
<HEAD><TITLE>ドキュメント全文検索</TITLE></HEAD>
<BODY>


<FORM METHOD=post ACTION="search.asp">
<TABLE>
<TR>
<TD>検索キー</TD>   
<TD><INPUT TYPE=text NAME="DocTitle" SIZE=40 MAXLENGTH=100></TD>
</TR>
<TR><TD>検索対象
<TD>
<SELECT NAME="Target" size="1">
<OPTION><%= Server.HTMLEncode(Target) %></OPTION>
<OPTION></OPTION>  
<%
file = Server.Mappath(".")
Set fs = CreateObject("Scripting.FileSystemObject")
Set colFolder = fs.GetFolder(file)
Set colSubFolder = colFolder.SubFolders
For Each SubFolder In colSubFolder
%>
  <OPTION><%=SubFolder.Name%></OPTION>
<%
Next
%>
</SELECT>
<TR>
<TD></TD> 
<TD>
<INPUT TYPE=submit VALUE="検索実行">
</TD>
</TR>
</TABLE>
</FORM>

<%
Function ChangePath(Path)
Dim P
Dim Path2
 
  ChangePath = Replace(Path,"file:C:/inetpub/wwwroot","")

End Function

'************************************
'メインプログラム
'************************************

DocTitle = Trim(Replace(Request("DocTitle")," "," "))

If Request("Target") <> "" Then
   ScopePath = Server.Mappath(".") & "\" & Request("Target")
Else
   ScopePath = Server.Mappath(".")
End If


If DocTitle = "" Then
  Response.Write "検索フレーズを入力してください"
Else
 
  Set objConnection = Server.CreateObject("ADODB.Connection")
  Set objRecordSet = Server.CreateObject("ADODB.Recordset") 
  objConnection.Open "Provider=Search.CollatorDSO;Extended Properties='Application=Windows';" 

  SQL = "SELECT System.ItemPathDisplay, System.Search.AutoSummary,System.ItemUrl,System.FileName  FROM SYSTEMINDEX "
  SQL = SQL & " WHERE (Contains('" &  DocTitle     & "') OR System.FileName Like '%"  &  DocTitle  &   "%') "
  SQL = SQL & " AND SCOPE = '" & ScopePath & "'"

  objRecordSet.Open SQL, objConnection 
 
  objRecordSet.MoveFirst
 
  Do Until objRecordset.EOF

      Response.Write "<A HREF='" & ChangePath(objRecordset("System.ItemUrl")) & "'>" & objRecordset("System.FileName") & "</A><BR>"
      %>  要約<%
      Response.Write objRecordset("System.Search.AutoSummary") & "<BR>"
      Response.Write "<BR><BR>"
      objRecordset.MoveNext
  Loop

End If


%>
</BODY>
</HTML>

inserted by FC2 system