<% NewQuery = FALSE UseSavedQuery = FALSE QueryForm = Request.ServerVariables( "PATH_INFO" ) ' QueryForm = "ixtrsasp.asp" SearchString = "" if Request.ServerVariables("REQUEST_METHOD") = "POST" then SearchString = Request.Form("SearchString") pg = Request.Form("pg") if pg <> "" then NextPageNumber = pg NewQuery = FALSE UseSavedQuery = TRUE else NewQuery = SearchString <> "" end if ' NOTE: this will be true only if the button is actually pushed. if Request.Form("Action") = "New Query" then NewQuery = TRUE end if end if %>

Sample ASP Search Form


Enter your query below:

<% if SearchString <> "" then if NewQuery then set Session("Query") = nothing set Session("Recordset") = nothing NextRecordNumber = 1 set Q = Server.CreateObject("ixsso.Query") set util = Server.CreateObject("ixsso.util") Q.Query = SearchString Q.SortBy = "rank[d]" Q.Columns = "DocTitle, vpath, path, filename, size, write, characterization" util.AddScopeToQuery Q, "/", "deep" set RS = Q.CreateRecordSet("nonsequential") RS.PageSize = 10 ActiveQuery = TRUE elseif UseSavedQuery then if IsObject( Session("Query") ) And IsObject( Session("RecordSet") ) then set Q = Session("Query") set RS = Session("RecordSet") if RS.RecordCount <> -1 and NextPageNumber <> -1 then RS.AbsolutePage = NextPageNumber NextRecordNumber = RS.AbsolutePosition end if ActiveQuery = TRUE else Response.Write "ERROR - No saved query" end if end if if ActiveQuery then if not RS.EOF then %>


<% 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 " & chr(34) & "" Response.Write SearchString & "" & chr(34) & ".

" %>

' BEGIN first row of query results table <% 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. %>

<%= NextRecordNumber%>. <%if VarType(RS("DocTitle")) = 1 or RS("DocTitle") = "" then%> "><%= Server.HTMLEncode( RS("filename") )%> <%else%> "><%= Server.HTMLEncode(RS("DocTitle"))%> <%end if%>
<%if VarType(RS("characterization")) = 8 and RS("characterization") <> "" then%> Abstract: <%= Server.HTMLEncode(RS("characterization"))%>
<%end if%> ">http://<%=Request("server_name")%><%=RS("vpath")%> - <%if RS("size") = "" then%>(size and time unknown)<%else%>size <%=RS("size")%> bytes - <%=RS("write")%> GMT<%end if%> <% RS.MoveNext NextRecordNumber = NextRecordNumber+1 Loop %>


<% else ' NOT RS.EOF if NextRecordNumber = 1 then Response.Write "No documents matched the query

" else Response.Write "No more documents in the query

" end if end if ' NOT RS.EOF %> ' If the index is out of date, display the fact <%if Q.OutOfDate then%>

The index is out of date.
<%end if%> ' 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 <%if Q.QueryIncomplete then%>

The query is too expensive to complete.
<%end if%> ' If the query took too long to execute (for example, if too much work ' was required to resolve the query), let the user know <%if Q.QueryTimedOut then%>

The query took too long to complete.
<%end if%> ' 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 ' BUGBUG - use RS.Supports(adMovePrevious)%> <%SaveQuery = TRUE%> <%end if%> ' This is the "next" button. ' This button retrieves the next page of documents for the query. ' If the RS.RecordCount is available, the number of ' documents on the next page will be displayed. <%if Not RS.EOF then%> <%SaveQuery = TRUE%> <%end if%>
<% 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 %>
' Display the page number Page <%=CurrentPage%> <%if RS.PageCount <> -1 then Response.Write " of " & RS.PageCount 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("Query") = Q set Session("RecordSet") = RS else RS.close Set RS = Nothing Set Q = Nothing set Session("Query") = Nothing set Session("RecordSet") = Nothing end if %> <% end if elseif not NewQuery then Response.Write "" else Response.Write "Please enter a word or phrase to search for." end if %>