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>