Files
admin
base
com
developer
drivers
ds
enduser
inetcore
inetsrv
iis
intlwb
msmq
published
query
admin
apps
bigtable
cicat
cidso
cifrmcom
cifrmwrk
cindex
ciodm
cipwd
cisvc
common
cursor
daemon
deflang
distrib
expander
fdriver
filters
fsci
h
icommand
ifilter
isearch
kbyacc
keysmith
localize
ntciutil
nullfilt
pch
qperf
query
qutil
redist
restrict
sdk
advquery
chgstate
dhtml
doc
filttst
genlib
htmlprop
ifilter
iisadmin
iissearch
adovbs.inc
advquery.asp
advsqlq.asp
default.htm
deferror.htx
fastq.htm
fastq.htx
fastq.idq
hilight.gif
htxerror.htx
idqerror.htx
ie.gif
install.bat
is2bkgnd.gif
is2foot.inc
is2logo.gif
is2style.css
ixqlang.htm
ixtiphlp.htm
ixtipsql.htm
navbar.htm
qfullhit.htw
qsumrhit.htw
query.asp
query.htm
query.htx
query.idq
rankbtn1.gif
rankbtn2.gif
rankbtn3.gif
rankbtn4.gif
rankbtn5.gif
readme.txt
reserror.htx
sqlqhit.asp
sqlqhit.htm
win2k.gif
qsample
smpfilt
squery
vb
vbadmin
vjquery
dirs
setupqry
sqltext
tdbv1
tokens
txtfilt
web
xpr
buildenv.txt
coding.doc
dirs
user.mk
dirs
project.mk
loc
mergedcomponents
multimedia
net
printscan
public
published
sdktools
shell
termsrv
tools
windows
dirs
makefil0
2025-04-27 07:49:33 -04:00

551 lines
20 KiB
Plaintext

<%@ LANGUAGE = VBScript %>
<% ' Option Explicit %>
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN" "html.dtd">
<HTML>
<HEAD>
<!--#INCLUDE FILE="adovbs.inc" -->
<BODY background="is2bkgnd.gif" OnLoad="SetAll()" LANGUAGE=JavaScript>
<TITLE>Advanced Indexing Service Search Form</TITLE>
<LINK REL=STYLESHEET HREF="is2style.css" TYPE="text/css">
<META NAME="DESCRIPTION" CONTENT="Sample SQL query form for Indexing Service">
<META NAME="AUTHOR" CONTENT="OLE DB Provider for Indexing Service Team">
<META NAME="KEYWORDS" CONTENT="sql, query, content, hit">
<META NAME="SUBJECT" CONTENT="sample form">
<META NAME="MS.CATEGORY" CONTENT="Internet">
<META NAME="MS.LOCALE" CONTENT="EN-US">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=Windows-1252">
<%
Const STAT_BUSY = 0
Const STAT_ERROR = &H1
Const STAT_DONE = &H2
Const STAT_REFRESH = &H3
Const STAT_PARTIAL_SCOPE = &H8
Const STAT_NOISE_WORDS = &H10
Const STAT_CONTENT_OUT_OF_DATE = &H20
Const STAT_REFRESH_INCOMPLETE = &H40
Const STAT_CONTENT_QUERY_INCOMPLETE = &H80
Const STAT_TIME_LIMIT_EXCEEDED = &H100
Function GetCiOutOfDate(value)
GetCiOutOfDate = value And STAT_CONTENT_OUT_OF_DATE
end Function
Function GetCiQueryIncomplete(value)
GetCiQueryIncomplete = value And STAT_CONTENT_QUERY_INCOMPLETE
end Function
Function GetCiQueryTimedOut(value)
GetCiQueryTimedOut = value And STAT_TIME_LIMIT_EXCEEDED
end Function
' Customization variables
DebugFlag = FALSE ' set TRUE for debugging
UseSessions = FALSE ' set FALSE to disable use of session variables
RecordsPerPage = 10 ' number of results on a page
MaxResults = 300 ' total number of results returned
FormLogo = "is2logo.gif" ' picture at top of page
' Hard-code some parameters that could be taken from the form
' SortBy = " order by rank desc" ' sort order
' Set initial conditions
NewQuery = FALSE
UseSavedQuery = FALSE
SearchString = ""
QueryForm = Request.ServerVariables("PATH_INFO")
if Request.ServerVariables("REQUEST_METHOD") = "POST" then
SearchString = Request.Form("SearchString")
DocAuthorRestriction = Request.Form("DocAuthorRestriction")
FSRest = Request.Form("FSRest")
FSRestVal = Request.Form("FSRestVal")
FSRestOther = Request.Form("FSRestOther")
FMMod = Request.Form("FMMod")
FMModDate = Request.Form("FMModDate")
SortBy = Request.Form("SortBy")
' NOTE: this will be true only if the button is actually pushed.
if Request.Form("Action") = "Execute" then
NewQuery = TRUE
NextPageNumber = -1
elseif Request.Form("pg") <> "" then
NextPageNumber = Request.Form("pg")
UseSavedQuery = UseSessions
NewQuery = not UseSessions
end if
End if
%>
</HEAD>
<TABLE>
<TR><TD><A HREF="http://www.microsoft.com/ntserver/search" target="_top">
<IMG SRC ="is2logo.gif" border=0 VALIGN=MIDDLE ALIGN="LEFT"></a></TD></TR>
<TR><TD ALIGN="RIGHT"><H3>Advanced SQL Sample</H3></TD></TR>
</TABLE>
<SCRIPT LANGUAGE=JavaScript>
<!--
function SetAll()
{
document.QForm.SearchString.value = "<%=SearchString%>";
<%select case FSRest%>
<%case " > "%>
document.QForm.FSRest.selectedIndex = 1;
<%case else%>
document.QForm.FSRest.selectedIndex = 0;
<%end select%>
<%select case FSRestVal%>
<%case "any"%>
document.QForm.FSRestVal.selectedIndex = 0;
<%case "100"%>
document.QForm.FSRestVal.selectedIndex = 1;
<%case "1024"%>
document.QForm.FSRestVal.selectedIndex = 2;
<%case "10240"%>
document.QForm.FSRestVal.selectedIndex = 3;
<%case "102400"%>
document.QForm.FSRestVal.selectedIndex = 4;
<%case "1048576"%>
document.QForm.FSRestVal.selectedIndex = 5;
<%case "10485760"%>
document.QForm.FSRestVal.selectedIndex = 6;
<%case "104857600"%>
document.QForm.FSRestVal.selectedIndex = 7;
<%case "other"%>
document.QForm.FSRestVal.selectedIndex = 8;
<%case else%>
document.QForm.FSRestVal.selectedIndex = 0;
<%end select%>
document.QForm.FSRestOther.value = "<%=FSRestOther%>";
<%select case FMMod%>
<%case "any"%>
document.QForm.FMMod.selectedIndex = 0;
<%case "DATEADD(minute, -10, GETGMTDATE())"%>
document.QForm.FMMod.selectedIndex = 1;
<%case "DATEADD(hour, -1, GETGMTDATE())"%>
document.QForm.FMMod.selectedIndex = 2;
<%case "DATEADD(day, -1, GETGMTDATE())"%>
document.QForm.FMMod.selectedIndex = 3;
<%case "DATEADD(week, -1, GETGMTDATE())"%>
document.QForm.FMMod.selectedIndex = 4;
<%case "DATEADD(month, -1, GETGMTDATE())"%>
document.QForm.FMMod.selectedIndex = 5;
<%case "DATEADD(quarter, -1, GETGMTDATE())"%>
document.QForm.FMMod.selectedIndex = 6;
<%case "DATEADD(year, -1, GETGMTDATE())"%>
document.QForm.FMMod.selectedIndex = 7;
<%case "since"%>
document.QForm.FMMod.selectedIndex = 8;
<%case else%>
document.QForm.FMMod.selectedIndex = 0;
<%end select%>
document.QForm.FMModDate.value = "<%=FMModDate%>";
document.QForm.DocAuthorRestriction.value = "<%=DocAuthorRestriction%>";
document.QForm.SearchString.focus();
}
//-->
</SCRIPT>
<FORM NAME="QForm" ACTION="<%=QueryForm%>" METHOD=POST>
<table width=500>
<tr>
<td>Enter your query: </td>
<td><INPUT TYPE="TEXT" NAME="SearchString" SIZE="51" MAXLENGTH="100" VALUE=""></td>
</tr>
<tr>
<td align="right" colspan=2>Document author:
<INPUT TYPE="TEXT" NAME="DocAuthorRestriction" SIZE="27" MAXLENGTH="100" VALUE="">
</tr>
<tr>
<td align="right" colspan=2>Where File Size is:
<SELECT NAME="FSRest">
<!-- <OPTION VALUE=" &lt; " <%if FSRest = " < " then%>SELECTED <%end if%>>Less Than
<OPTION VALUE=" &gt; " <%if FSRest = " > " then%>SELECTED <%end if%>>Greater Than
-->
<OPTION VALUE=" &lt; " SELECTED>Less Than
<OPTION VALUE=" &gt; " >Greater Than
</SELECT>
<SELECT NAME="FSRestVal" DEFAULT VALUE="any">
<OPTION VALUE="any" SELECTED>any size
<OPTION VALUE="100" >100 bytes
<OPTION VALUE="1024" >1K bytes
<OPTION VALUE="10240" >10K bytes
<OPTION VALUE="102400" >100K bytes
<OPTION VALUE="1048576" >1M byte
<OPTION VALUE="10485760" >10M bytes
<OPTION VALUE="104857600" >100M bytes
<OPTION VALUE="other" >Other
</SELECT>
<INPUT TYPE="TEXT" NAME="FSRestOther" SIZE="12" MAXLENGTH="9" VALUE="">
</td>
</tr>
<tr>
<td align="right" colspan=2>Modified:
<SELECT NAME="FMMod">
<OPTION VALUE="any" SELECTED >at any time.
<OPTION VALUE="DATEADD(minute, -10, GETGMTDATE())">in the last 10 minutes.
<OPTION VALUE="DATEADD(hour, -1, GETGMTDATE())">in the last hour.
<OPTION VALUE="DATEADD(day, -1, GETGMTDATE())">in the last day.
<OPTION VALUE="DATEADD(week, -1, GETGMTDATE())">in the last week.
<OPTION VALUE="DATEADD(month, -1, GETGMTDATE())">in the last month.
<OPTION VALUE="DATEADD(quarter, -1, GETGMTDATE())">in the last quarter.
<OPTION VALUE="DATEADD(year, -1, GETGMTDATE())">in the last year.
<OPTION VALUE="since">since GMT (yy/mm/dd) .
</SELECT>
<INPUT TYPE="TEXT" NAME="FMModDate" SIZE="12" MAXLENGTH="9" VALUE="">
</td>
</tr>
<tr>
<td align="left"><a href="ixtipsql.htm">SQL Syntax Tips</a></td>
<td align="right">
<INPUT TYPE="SUBMIT" NAME="Action" VALUE="Execute">
<INPUT TYPE="RESET" NAME="Clear" VALUE="Clear">
</td>
</tr>
</table>
<INPUT TYPE="HIDDEN" NAME="SortBy" VALUE=" order by rank desc">
</FORM>
<BR>
<%if DebugFlag then%>
<PRE>
SearchString = <%=SearchString%>
DocAuthorRestriction = <%=DocAuthorRestriction%>
FSRest = <%=FSRest%>
FSRestVal = <%=FSRestVal%>
FSRestOther = <%=FSRestOther%>
FMMod = <%=FMMod%>
FMModDate = <%=FMModDate%>
SortBy = <%=SortBy%>
NewQuery = <%=CStr(NewQuery)%>
UseSavedQuery = <%=CStr(UseSavedQuery)%>
</PRE>
<%end if%>
<%
if NewQuery then
' First Reset the Connection, command and recordSet Object.
if UseSessions then
set session("AdoConnection") = nothing
set session("AdoCommand") = nothing
set session("Recordset") = nothing
end if
NextRecordNumber = 1
set AdoConnection = Server.CreateObject("ADODB.Connection")
set AdoCommand = Server.CreateObject("ADODB.Command")
AdoConnection.ConnectionString = "provider=msidxs"
AdoConnection.Open
set AdoCommand.ActiveConnection = AdoConnection
SelectColumns = "DocTitle, vpath, path, filename, size, write, characterization"
SelectString = "Select " + SelectColumns + " from Web..Scope('Deep traversal of ""/""') "
Composer = ""
TheQuery = ""
if SearchString <> "" then
TheQuery = "Contains('""" + SearchString + """')"
Composer = " and "
end if
if FSRestVal <> "any" then
if FSRestVal <> "other" then
if FSRestVal <> "" then
TheQuery = "Size " + FSRest + FSRestVal + " " + Composer + TheQuery
end if
else
TheQuery = "Size " + FSRest + FSRestOther + " " + Composer + TheQuery
end if
Composer = " and "
end if
if DocAuthorRestriction <> "" then
TheQuery = "Contains(DocAuthor, '""" + DocAuthorRestriction + """') " + Composer + TheQuery
Composer = " and "
end if
if FMMod <> "" AND FMMod <> "any" then
if FMMod <> "since" then
TheQuery = "(Write > " + FMMod + ") " + Composer + TheQuery
else
TheQuery = "(Write > '" + FMModDate + "') " + Composer + TheQuery
end if
end if
if TheQuery <> "" then
SelectString = SelectString + " where " + TheQuery +" "+ SortBy
else
SelectString = SelectString + SortBy +" "
end if
if DebugFlag then
Response.Write "SelectString = " + SelectString + "<BR>"
end if
AdoCommand.CommandText = SelectString
set RS = Server.CreateObject("AdoDB.Recordset")
RS.CursorType = adOpenKeyset
AdoCommand.Properties("Bookmarkable") = True
if MaxResults <> -1 then
RS.MaxRecords=MaxResults
end if
RS.Open AdoCommand
RS.PageSize = RecordsPerPage
ActiveQuery = TRUE
%>
<!-- BEGIN column header -->
<%
elseif UseSavedQuery then
if IsObject( Session("AdoConnection") ) And IsObject( Session("AdoCommand")) AND IsObject( Session("RecordSet") ) then
set AdoConnection = Session("AdoConnection")
set AdoCommand = Session("AdoCommand")
set RS = Session("RecordSet")
ActiveQuery = TRUE
else
Response.Write "ERROR - No saved query"
end if
end if
%>
<!-- BEGIN first row of query results table -->
<%
if ActiveQuery then
if RS.RecordCount <> -1 and NextPageNumber <> -1 then
RS.AbsolutePage = NextPageNumber
NextRecordNumber = RS.AbsolutePosition
end if
if not RS.EOF then
%>
<p>
<HR WIDTH=80% ALIGN=center SIZE=3>
<p>
<%
LastRecordOnPage = NextRecordNumber + RS.PageSize - 1
CurrentPage = RS.AbsolutePage
if RS.RecordCount <> -1 AND RS.RecordCount < LastRecordOnPage then
LastRecordOnPage = RS.RecordCount
end if
Response.Write "Documents " & NextRecordNumber & " to " & LastRecordOnPage
if RS.RecordCount <> -1 then
Response.Write " of " & RS.RecordCount
end if
Response.Write " matching the query: "
Response.Write "<P>" & chr(34) & AdoCommand.CommandText & "</I>" & chr(34) & ".<P>"
%>
<TABLE width=500>
<%
Do While Not RS.EOF and NextRecordNumber <= LastRecordOnPage %>
<%
' This is the detail portion for Title, Abstract, URL, Size, and
' Modification Date.
' If there is a title, display it, otherwise display the virtual path.
%>
<tr class="RecordTitle">
<td align="right" valign="top" class="RecordTitle">
<%= NextRecordNumber%>.
</td>
<td><b class="RecordTitle">
<%if VarType(RS("DocTitle")) = 1 or RS("DocTitle") = "" then%>
<b><a href="<%=RS("vpath")%>"><%= Server.HTMLEncode( RS("filename") )%></a></b>
<%else%>
<b><a href="<%=RS("vpath")%>"><%= Server.HTMLEncode(RS("DocTitle"))%></a></b>
<%end if%>
</td>
</tr>
<tr>
<td></td>
<td>
<%if VarType(RS("characterization")) = 8 and RS("characterization") <> "" then%>
<b><i>Abstract: </I></b><%= Server.HTMLEncode(RS("characterization"))%>
<br>
<%end if%>
</td>
</tr>
<tr>
<td></td>
<td class="RecordStats" height=40>
<a href="<%=RS("vpath")%>" class="RecordStats" style="color:blue;">http://<%=Request("server_name")%><%=RS("vpath")%></a>
<br><%if RS("size") = "" then%>(size and time unknown)<%else%>size <%=RS("size")%> bytes - <%=RS("write")%> GMT<%end if%></font>
<%if SearchString <> "" then%>
<%
QueryString = CStr(RS.Properties("Query Restriction"))
%>
<BR>
<%
' Construct the URL for hit highlighting
WebHitsQuery = "CiWebHitsFile=" & Server.URLEncode( RS("vpath") )
WebHitsQuery = WebHitsQuery & "&CiRestriction=" & Server.URLEncode( QueryString )
WebHitsQuery = WebHitsQuery & "&CiBeginHilite=" & Server.URLEncode( "<b class=""Hit"">" )
WebHitsQuery = WebHitsQuery & "&CiEndHilite=" & Server.URLEncode( "</b>" )
WebHitsQuery = WebHitsQuery & "&CiUserParam3=" & QueryForm
%>
<a href="qsumrhit.htw?<%= WebHitsQuery %>">
<IMG src="hilight.gif" align="left" alt="Highlight matching terms in document using Summary mode."> Summary</a>
<br>
<a href="qfullhit.htw?<%= WebHitsQuery %>&CiHiliteType=Full">
<IMG src="hilight.gif" align="left" alt="Highlight matching terms in document."> Full</a>
<%end if%>
<br>
</td>
</tr>
<%
RS.MoveNext
NextRecordNumber = NextRecordNumber+1
Loop
%>
</TABLE>
<%
else
if NextRecordNumber = 1 then
Response.Write "No documents matched the query<P>"
else
Response.Write "No more documents in the query<P>"
end if
end if ' NOT RS.EOF
if NOT GetCiOutofDate(RS.Properties("Rowset Query Status")) then
' If the index is current, display the fact %>
<P>
<I><B>The index is up to date.</B></I><BR>
<%end if
if GetCiQueryIncomplete(RS.Properties("Rowset Query Status")) then
' If the query was not executed because it needed to enumerate to
' resolve the query instead of using the index, but AllowEnumeration
' was FALSE, let the user know
%>
<P>
<I><B>The query is too expensive to complete.</B></I><BR>
<%end if
if GetCiQueryTimedOut(RS.Properties("Rowset Query Status")) then
' If the query took too long to execute (for example, if too much work
' was required to resolve the query), let the user know %>
<P>
<I><B>The query took too long to complete.</B></I><BR>
<%end if%>
<TABLE>
<%
' This is the "previous" button.
' This retrieves the previous page of documents for the query.
SaveQuery = FALSE
if CurrentPage > 1 and RS.RecordCount <> -1 then %>
<td align="left">
<form action="<%=QueryForm%>" method="post">
<INPUT TYPE="HIDDEN" NAME="SearchString" VALUE="<%=SearchString%>">
<INPUT TYPE="HIDDEN" NAME="DocAuthorRestriction" VALUE="<%=DocAuthorRestriction%>">
<INPUT TYPE="HIDDEN" NAME="FSRest" VALUE="<%=FSRest%>">
<INPUT TYPE="HIDDEN" NAME="FSRestVal" VALUE="<%=FSRestVal%>">
<INPUT TYPE="HIDDEN" NAME="FSRestOther" VALUE="<%=FSRestOther%>">
<INPUT TYPE="HIDDEN" NAME="FMMod" VALUE="<%=FMMod%>">
<INPUT TYPE="HIDDEN" NAME="FMModDate" VALUE="<%=FMModDate%>">
<INPUT TYPE="HIDDEN" NAME="SortBy" VALUE="<%=SortBy%>">
<INPUT TYPE="HIDDEN" NAME="Scope" VALUE="<%=Scope%>">
<INPUT TYPE="HIDDEN" NAME="pg" VALUE="<%=CurrentPage-1%>" >
<input type="submit" value="Previous <%=RS.PageSize%> documents">
</form>
</td>
<%SaveQuery = UseSessions%>
<%end if%>
<%if Not RS.EOF then
' This is the "next" button.
' This button retrieves the next page of documents for the query.
%>
<td align="right">
<form action="<%=QueryForm%>" method="post">
<INPUT TYPE="HIDDEN" NAME="SearchString" VALUE="<%=SearchString%>">
<INPUT TYPE="HIDDEN" NAME="DocAuthorRestriction" VALUE="<%=DocAuthorRestriction%>">
<INPUT TYPE="HIDDEN" NAME="FSRest" VALUE="<%=FSRest%>">
<INPUT TYPE="HIDDEN" NAME="FSRestVal" VALUE="<%=FSRestVal%>">
<INPUT TYPE="HIDDEN" NAME="FSRestOther" VALUE="<%=FSRestOther%>">
<INPUT TYPE="HIDDEN" NAME="FMMod" VALUE="<%=FMMod%>">
<INPUT TYPE="HIDDEN" NAME="FMModDate" VALUE="<%=FMModDate%>">
<INPUT TYPE="HIDDEN" NAME="SortBy" VALUE="<%=SortBy%>">
<INPUT TYPE="HIDDEN" NAME="Scope" VALUE="<%=Scope%>">
<INPUT TYPE="HIDDEN" NAME="pg" VALUE="<%=CurrentPage+1%>" >
<%
NextString = "Next "
if RS.RecordCount <> -1 then
NextSet = (RS.RecordCount - NextRecordNumber) + 1
if NextSet > RS.PageSize then
NextSet = RS.PageSize
end if
NextString = NextString & NextSet & " documents"
else
NextString = NextString & " page of documents"
end if
%>
<input type="submit" value="<%=NextString%>">
</form>
</td>
<%SaveQuery = UseSessions%>
<%end if%>
</TABLE>
<% ' Display the page number
if RS.PageCount <> 0 then
Response.Write "Page " & CurrentPage
if RS.PageCount <> -1 then
Response.Write " of " & RS.PageCount
end if
end if
' If either of the previous or back buttons were displayed, save
' the query and the recordset in session variables.
if SaveQuery then
set Session("AdoConnection") = AdoConnection
set Session("AdoCommand") = AdoCommand
set Session("RecordSet") = RS
else
RS.close
AdoConnection.Close
Set RS = Nothing
Set AdoCommand = Nothing
Set AdoConnection = Nothing
if UseSessions then
set Session("AdoConnection") = Nothing
set Session("AdoCommand") = Nothing
set Session("RecordSet") = Nothing
end if
end if
end if
%>
<BR>
<!--#include file ="is2foot.inc"-->
</BODY>
</HTML>