Re: webbased search through catalog

From: George Cheng [MSFT] (GCheng_at_online.microsoft.com)
Date: 11/04/04


Date: Thu, 04 Nov 2004 16:46:41 GMT

Here is query.asp. Modify q.catalog to specify your catalog name.

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN" "html.dtd">
<HTML>
<HEAD>
<%
' ********** INSTRUCTIONS FOR QUICK CUSTOMIZATION **********
'
' This form is set up for easy customization. It allows you to modify the
' page logo, the page background, the page title and simple query
' parameters by modifying a few files and form variables. The procedures
' to do this are explained below.
'
'
' *** Modifying the Form Logo:

' The logo for the form is named is2logo.gif. To change the page logo,
simply
' name your logo is2logo.gif and place in the same directory as this form.
If
' your logo is not a GIF file, or you don't want to copy it, change the
following
' line so that the logo variable contains the URL to your logo.

        FormLogo = "is2logo.gif"

'
' *** Modifying the Form's background pattern.

' You can use either a background pattern or a background color for your
' form. If you want to use a background pattern, store the file with the
name
' is2bkgnd.gif in the same directory as this file and remove the remark
character
' the single quote character) from the line below. Then put the remark
character on
' the second line below.
'
' If you want to use a different background color than white, simply edit
the
' bgcolor line below, replacing white with your color choice.

' FormBG = "background = " & chr(34) & "is2bkgnd.gif" & chr(34)
        FormBG = "bgcolor = " & chr(34) & "#FFFFFF" & chr(34)

' *** Modifying the Form's Title Text.

' The Form's title text is set on the following line.

%>
    <TITLE>Sample ASP Search Form</TITLE>
<%
'
' *** Modifying the Form's Search Scope.
'
' The form will search from the root of your web server's namespace and
below
' (deep from "/" ). To search a subset of your server, for example, maybe
just
' a PressReleases directory, modify the scope variable below to list the
' virtual path to search. The search will start at the directory you specify
' and include all sub-directories.

        FormScope = "/"

'
' *** Modifying the Number of Returned Query Results.
'
' You can set the number of query results returned on a single page
' using the variable below.

        PageSize = 10
'
' You can set the total number of query results returned using the
' variable below.

        MaxResults = 300

'
' *** Setting the Locale.
'
' The following line sets the locale used for queries. In most cases, this
' should match the locale of the server. You can set the locale below.

        SiteLocale = "EN-US"

'
' *** Enable saving active searches in session variables
'
' The following line enables using session state to save multi-page queries
' and avoid re-executing them when the user presses the Next Page button.
' This should be set FALSE if sessions are disabled using
AspAllowSessionState.

        UseSessions = TRUE

' ********** END QUICK CUSTOMIZATION SECTIONS ***********
%>

    <LINK REL=STYLE*** HREF="is2style.css" TYPE="text/css">

    <META NAME="DESCRIPTION" CONTENT="Sample ASP query form for Indexing
Service">
    <META NAME="AUTHOR" CONTENT="Indexing Service Team">
    <META NAME="KEYWORDS" CONTENT="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">
<%
' Set Initial Conditions
    NewQuery = FALSE
    UseSavedQuery = FALSE
    SearchString = ""

    QueryForm = Request.ServerVariables("PATH_INFO")

' Did the user press a SUBMIT button to execute the form? If so get the
form variables.
    if Request.ServerVariables("REQUEST_METHOD") = "POST" then
        SearchString = Request.Form("SearchString")
        Advanced = Request.Form("Advanced")
        ' NOTE: this will be true only if the button is actually pushed.
        if Request.Form("Action") = "Go" then
            NewQuery = TRUE
            RankBase=1000
            NextPageNumber = -1
        end if
    end if
    if Request.ServerVariables("REQUEST_METHOD") = "GET" then
        SearchString = Request.QueryString("qu")
        Advanced = Request.QueryString("Advanced")
        FormScope = Request.QueryString("sc")
        RankBase = Request.QueryString("RankBase")
        if Request.QueryString("pg") <> "" then
            NextPageNumber = Request.QueryString("pg")
            UseSavedQuery = UseSessions
            NewQuery = not UseSessions
        else
            NewQuery = SearchString <> ""
            NextPageNumber = -1
        end if
    end if
%>
</HEAD>

<BODY OnLoad="Init()" LANGUAGE="JSCRIPT" <%=FormBG%>>

<TABLE>
    <TR><TD><A HREF="http://www.microsoft.com/ntserver/search"
target="_top"><IMG SRC ="<%=FormLogo%>" border=0 VALIGN=MIDDLE
ALIGN=LEFT></a></TD></TR>
    <TR><TD ALIGN="RIGHT"><H3>Sample ASP Search Form</H3></TD></TR>
</TABLE>

<p>

<FORM NAME=QueryForm ACTION="<%=QueryForm%>" METHOD=POST>
    <TABLE WIDTH=500>
        <TR>
            <TD>Enter your query below:</TD>
        </TR>
        <TR>
            <TD><INPUT TYPE="TEXT" NAME="SearchString" SIZE="65"
MAXLENGTH="100" VALUE="<%=SearchString%>" TABINDEX=1></TD>
            <TD><BUTTON TYPE=SUBMIT NAME="Action">Go</BUTTON></TD>
        </TR>
        <TR>
            <TD ALIGN="RIGHT"><A HREF="ixtiphlp.htm">Tips for
searching</A></TD>
        </TR>
        <TR>
        </TR>
        <TR>
            <TD><INPUT NAME="Advanced" TYPE=CHECKBOX<% if Advanced = "on"
then Response.Write(" CHECKED") end if %>>
                Use Advanced Query.
            </TD>
        </TR>
    </TABLE>
</FORM>

<BR>

<%
  if NewQuery then
    if UseSessions then
       set Session("Query") = nothing
       set Session("Recordset") = nothing
    end if
    NextRecordNumber = 1

    ' Remove any leading and ending quotes from SearchString

    SrchStrLen = len(SearchString)

    if left(SearchString, 1) = chr(34) then
            SrchStrLen = SrchStrLen-1
            SearchString = right(SearchString, SrchStrLen)
    end if

    if right(SearchString, 1) = chr(34) then
            SrchStrLen = SrchStrLen-1
            SearchString = left(SearchString, SrchStrLen)
    end if

    if Advanced<> "on" then
      CompSearch = "{freetext} " & SearchString & "{/freetext}"
    else
      CompSearch = SearchString
    end if

    set Q = Server.CreateObject("ixsso.Query")
    set Util = Server.CreateObject("ixsso.Util")

    Q.Catalog = "web"
    Q.Query = CompSearch
    Q.SortBy = "rank[d]"
    Q.Columns = "DocTitle, vpath, filename, size, write, characterization,
rank"

    if MaxResults <> -1 then
        Q.MaxRecords = MaxResults
    end if

    if FormScope <> "\" then
        Util.AddScopeToQuery Q, FormScope, "deep"
    end if

    if SiteLocale<>"" then
        Q.LocaleID = Util.ISOToLocaleID(SiteLocale)
    end if
    set Util = nothing

    set RS = Q.CreateRecordSet("nonsequential")

    RS.PageSize = PageSize
    RS.CacheSize = PageSize
    ActiveQuery = TRUE

  elseif UseSavedQuery then
    if IsObject( Session("Query") ) And IsObject( Session("RecordSet") )
then
      set Q = Session("Query")
      set RS = Session("RecordSet")

      ActiveQuery = TRUE
    else
      Response.Write "ERROR - No saved query"
    end if
  end if

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

<% if Not RS.EOF and NextRecordNumber <= LastRecordOnPage then%>
<table border=0>
<colgroup width=105>
<% end if %>

<% 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 filename.
%>
    <p>
<%
    ' Graphically indicate rank of document with list of stars (*'s).

        if NextRecordNumber = 1 then
            RankBase=RS("rank")
        end if

        if RankBase>1000 then
            RankBase=1000
        elseif RankBase<1 then
            RankBase=1
        end if

        NormRank = RS("rank")/RankBase

        if NormRank > 0.80 then
            stars = "rankbtn5.gif"
        elseif NormRank > 0.60 then
            stars = "rankbtn4.gif"
        elseif NormRank > 0.40 then
            stars = "rankbtn3.gif"
        elseif NormRank >.20 then
            stars = "rankbtn2.gif"
        else
            stars = "rankbtn1.gif"
        end if
%>
        <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%>
                    <a
href="javascript:NAF('http://<%=Request.ServerVariables("SERVER_NAME")%><%=R
S("vpath")%>','<%=SearchString%>')" class="RecordTitle"><%=
Server.HTMLEncode( RS("filename") )%></a>
                <%else%>
                    <a
href="javascript:NAF('http://<%=Request.ServerVariables("SERVER_NAME")%><%=R
S("vpath")%>','<%=SearchString%>')" class="RecordTitle"><%=
Server.HTMLEncode(RS("DocTitle"))%></a>
                <%end if%>
            </b></td>
        </tr>

        <tr>
            <td valign=top align=left>
                <IMG SRC="<%=stars%>">
                <br>
<%
    ' Construct the URL for hit highlighting
        WebHitsQuery = "CiWebHitsFile=" & Server.URLEncode( RS("vpath") )
        WebHitsQuery = WebHitsQuery & "&CiRestriction=" & Server.URLEncode(
Q.Query )
        WebHitsQuery = WebHitsQuery & "&CiBeginHilite=" & Server.URLEncode(
"<strong class=Hit>" )
        WebHitsQuery = WebHitsQuery & "&CiEndHilite=" & Server.URLEncode(
"</strong>" )
        WebHitsQuery = WebHitsQuery & "&CiUserParam3=" & QueryForm
' WebHitsQuery = WebHitsQuery & "&CiLocale=" & Q.LocaleID
 %>
                <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>
            </td>
            <td valign=top>
                <%if VarType(RS("characterization")) = 8 and
RS("characterization") <> "" then%>
                <b><i>Abstract: </i></b>
                    <%= Server.HTMLEncode(RS("characterization"))%>
                <%end if%>
                <p>
                <i class="RecordStats"><a
href="javascript:NAF('http://<%=Request.ServerVariables("SERVER_NAME")%><%=R
S("vpath")%>','<%=SearchString%>')" 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%></i>
            </td>
        </tr>
        <tr>
        </tr>
<%
          RS.MoveNext
          NextRecordNumber = NextRecordNumber+1
      Loop
 %>

</table>
<P><BR>

<%
  else ' NOT RS.EOF
      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 Q.OutOfDate then
' If the index is current, display the fact %>
<P>
    <I><B>The index is up to date.</B></I><BR>
<%end if

  if Q.QueryIncomplete 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 Q.QueryTimedOut 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="get">
            <INPUT TYPE="HIDDEN" NAME="qu" VALUE="<%=SearchString%>">
            <INPUT TYPE="HIDDEN" NAME="Advanced" VALUE="<%=Advanced%>">
            <INPUT TYPE="HIDDEN" NAME="sc" VALUE="<%=FormScope%>">
            <INPUT TYPE="HIDDEN" NAME="pg" VALUE="<%=CurrentPage-1%>" >
            <INPUT TYPE="HIDDEN" NAME="RankBase" VALUE="<%=RankBase%>">
            <input type="submit" value="Previous <%=RS.PageSize%>
documents">
        </form>
    </td>
    <%SaveQuery = UseSessions%>
<%end if%>

<%
' This is the "next" button for unsorted queries.
' This retrieves the next page of documents for the query.

  if Not RS.EOF then%>
    <td align=right>
        <form action="<%=QueryForm%>" method="get">
            <INPUT TYPE="HIDDEN" NAME="qu" VALUE="<%=SearchString%>">
            <INPUT TYPE="HIDDEN" NAME="Advanced" VALUE="<%=Advanced%>">
            <INPUT TYPE="HIDDEN" NAME="sc" VALUE="<%=FormScope%>">
            <INPUT TYPE="HIDDEN" NAME="pg" VALUE="<%=CurrentPage+1%>">
            <INPUT TYPE="HIDDEN" NAME="RankBase" VALUE="<%=RankBase%>">
            <%
               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("Query") = Q
        set Session("RecordSet") = RS
    else
        RS.close
        Set RS = Nothing
        Set Q = Nothing
        if UseSessions then
           set Session("Query") = Nothing
           set Session("RecordSet") = Nothing
        end if
    end if
 %>
<% end if %>
<BR>

</BODY>

<SCRIPT LANGUAGE=JSCRIPT>
function Init()
{
    QueryForm.SearchString.focus();
}

function msieversion()
{
    var ua = window.navigator.userAgent;
    var msie = ua.indexOf("MSIE");
    if (msie>0)
        return parseInt(ua.substring(msie+5, ua.indexOf(".", msie)));
    else
        return 0;
}

function NAF(szUrl, szQuery)
{
    if (msieversion() >= 5)
        window.external.NavigateAndFind(szUrl, szQuery, "_main");
    else
        window.navigate(szUrl, target="_main");
}
</SCRIPT>

</HTML>

Thank You

George Cheng

Microsoft Application Center & Index Server Support

Note: This article has no warranties implicit or explicit.
All the content is given on the "as is" basis and the user
takes full responsibility for its use and assumption.
Microsoft Corporation Copyright 2004
All Rights Reserved

--------------------
| From: niels.hollatz@gmail.com (Niels Hollatz)
| Newsgroups: microsoft.public.inetserver.indexserver
| Subject: Re: webbased search through catalog
| Date: 1 Nov 2004 06:09:19 -0800
| Organization: http://groups.google.com
| Lines: 86
| Message-ID: <c444c6d4.0411010609.73b904df@posting.google.com>
| References: <c444c6d4.0410290407.1d97ac58@posting.google.com>
<cdZlSMfvEHA.2692@cpmsftngxa10.phx.gbl>
| NNTP-Posting-Host: 193.172.204.20
| Content-Type: text/plain; charset=ISO-8859-1
| Content-Transfer-Encoding: 8bit
| X-Trace: posting.google.com 1099318160 30877 127.0.0.1 (1 Nov 2004
14:09:20 GMT)
| X-Complaints-To: groups-abuse@google.com
| NNTP-Posting-Date: Mon, 1 Nov 2004 14:09:20 +0000 (UTC)
| Path:
cpmsftngxa10.phx.gbl!TK2MSFTNGXA03.phx.gbl!TK2MSFTNGP08.phx.gbl!newsfeed00.s
ul.t-online.de!t-online.de!news.glorb.com!postnews1.google.com!not-for-mail
| Xref: cpmsftngxa10.phx.gbl microsoft.public.inetserver.indexserver:30247
| X-Tomcat-NG: microsoft.public.inetserver.indexserver
|
| ok, so i have to use asp.
|
| Can you provide me a sample?
| So i can edit the catalog name etc.
|
| I don't have much knowledge about asp programming, but i can edit
| existing scripts :)
|
|
| Eventually the user must be able to search through the catalog (that
| resides on the archive server)
|
|
| Thanks in advantage!
|
| niels
|
|
|
| GCheng@online.microsoft.com ("George Cheng [MSFT]") wrote in message
news:<cdZlSMfvEHA.2692@cpmsftngxa10.phx.gbl>...
| > Its not recommended to use that page. You should be using the sample
pages
| > from the platform SDK. query.asp should work fine with IIS.
| >
| > Thank You
| >
| > George Cheng
| >
| > Microsoft Application Center & Index Server Support
| >
| > Note: This article has no warranties implicit or explicit.
| > All the content is given on the "as is" basis and the user
| > takes full responsibility for its use and assumption.
| > Microsoft Corporation Copyright 2004
| > All Rights Reserved
| >
| > --------------------
| > | From: niels.hollatz@gmail.com (Niels Hollatz)
| > | Newsgroups: microsoft.public.inetserver.indexserver
| > | Subject: webbased search through catalog
| > | Date: 29 Oct 2004 05:07:44 -0700
| > | Organization: http://groups.google.com
| > | Lines: 28
| > | Message-ID: <c444c6d4.0410290407.1d97ac58@posting.google.com>
| > | NNTP-Posting-Host: 193.172.204.20
| > | Content-Type: text/plain; charset=ISO-8859-1
| > | Content-Transfer-Encoding: 8bit
| > | X-Trace: posting.google.com 1099051664 15079 127.0.0.1 (29 Oct 2004
| > 12:07:44 GMT)
| > | X-Complaints-To: groups-abuse@google.com
| > | NNTP-Posting-Date: Fri, 29 Oct 2004 12:07:44 +0000 (UTC)
| > | Path:
| >
cpmsftngxa10.phx.gbl!TK2MSFTNGXA06.phx.gbl!cpmsftngxa06.phx.gbl!TK2MSFTNGP08
| >
phx.gbl!newsfeed00.sul.t-online.de!t-online.de!news.glorb.com!postnews1.goo
| > gle.com!not-for-mail
| > | Xref: cpmsftngxa10.phx.gbl
microsoft.public.inetserver.indexserver:30233
| > | X-Tomcat-NG: microsoft.public.inetserver.indexserver
| > |
| > | hi,
| > |
| > |
| > | I have a catalog which contains the index of our archive (60GB of
| > | docs),
| > |
| > | And i want to search through it like the example of microsoft does
| > | (You can find it in C:\[systemroot]\help\ciquery.htm)
| > |
| > | So if you define
ciquery.htm#machine\[machinename],catalog[catalogname]
| > |
| > | It will give you a query form which searches through the defined
| > | catalog.
| > | (this is perfect!)
| > |
| > | But this doesn't work when called from a remote machine (client pc)
| > |
| > | Is this possible? or are the're any alternatives (free)
| > |
| > |
| > | Kind Regards,
| > |
| > | Niels Hollatz
| > |
| > | p.s.
| > | The OS is: Windows 2003 standard edition
| > | IIS 6.0
| > | All pathes installed
| > |
|


Loading