Search Site        

Template variables

Each section consists of HTML formatted text with special meta symbols. Every meta symbol is replaced by its corresponding string. You can think of meta symbols as of variables, which will have their appropriate values while displaying search results.

Format of variables is the following:

$(x) - plain value
$&(x) - HTML-escaped value
$%(x) - value escaped to be used in URLs

Template sections

The following section names are defined:

TOP - This section is included first on every page. You should begin this section with <HTML><HEAD> and so on. Also, this is a definitive place to provide a search form. There are two special meta symbols you may use in this section:

$(self)  - argument for FORM ACTION tag
$(q)     - a search query
$(ndocs)  - total number of documents in the database
$(cat)    - current category value
$(g)      - current tag value
$(rN) - random number (here N is a number)

If you want to include some random banners on your pages, please use $rN. You should also place string like "RN xxxx" in variables section (see below), which will give you a range 0..xxxx for $rN. You can use as many up random numbers as you want.

Example: $(r0), $(r1), $(r45) etc.

Simple top section should be like this:

 <TITLE>mnoGoSearch: $(q)</TITLE>

 <INPUT TYPE="hidden" NAME="ul" VALUE="">
 <INPUT TYPE="hidden" NAME="ps" VALUE="20">
 Search for: <INPUT TYPE="text" NAME="q" SIZE=30 VALUE="$&(q)">
 <INPUT TYPE="submit" VALUE="Search!"><BR>

There are some variables defined in FORM.

ul is the filter for URL. It allows you to limit results to particular site or section etc. For example, you can put the following in the form

Search through:

<OPTION VALUE=""            SELECTED="$(ul)">Entire site
<OPTION VALUE="/manual/"    SELECTED="$(ul)">Manual
<OPTION VALUE="/products/"  SELECTED="$(ul)">Products
<OPTION VALUE="/support/"   SELECTED="$(ul)">Support

to limit your search to particular section.

The expression SELECTED="$(ul)" in example above (and all the examples below) allows the selected option to be reproduced on next pages. If search front-end finds that expression it prints the string SELECTED only in the case OPTION VALUE given is equal to that variable.

ps is default page size (e.g. how many documents to display per page).

q is the query itself.

pn is ps*np. This variable is not used by mnoGoSearch, but may be useful for example in <!INCLUDE CONTENT="..."> directive if you want to include result produced by another search engine.

Following variables are concerning advanced search capabilities:

  • m can be used to choose default search type if your query consists of more than one word. In case m=any, the search will try to find at least one word, in case m=all, the search is more restrictive - all words should be in the document. If m=bool query string is considered as a boolean expression.

  • o is used to specify the output format, so user can select different formats. There are three formats in default search.htm-dist for "res" section. They are used to output documents information in "Long", "Short" and "URL only" representation. However, you may use several formats for all sections, not for "res" only.

  • dt is time limiting type. There are three types supported.

    If 'dt' is 'back', that means you want to limit result to recent pages, and you should specify this "recentness" in variable 'dp' in the form xxxA[yyyB[zzzC]]. Spaces are allowed between xxx and A and yyy and so on). xxx, yyy, zzz are numbers (can be negative!) A, B, C can be one of the following (the letters are the same as in strptime/strftime functions):

     s - second
     M - minute
     h - hour
     d - day
     m - month
     y - year


      4h30m    - 2 hours and 30 minutes
      1Y6M-15d  - 1 year and six month minus 15 days
      1h-60m+1s - 1 hour minus 60 minutes plus 1 second

    If 'dt' is 'er' (which is short for newer/older), that means the search will be limited to pages newer or older than date given. Variable dx is newer/older flag (1 means "newer" or "after", -1 means "older" or "before"). Date is separated into fields as follows:

      'dm' - month (0 - January, 1 - February, .., 11 - December)
      'dy' - year (four digits, for example 1999 or 2000)
      'dd' - day (1...31)

    If 'dt' is 'range', that means search within given range of dates. Variables 'db' and 'de' are used here and stands for beginning and end date. Each date is string in the form dd/mm/yyyy, there dd is day, mm is month and yyyy is four-digits year.

    This is the example of FORM part where you can choose between different time limiting options.

    <!-- 'search with time limits' options -->
    Limit results to pages published within a specified 
    period of time.<BR>
    <FONT SIZE=-1><I>(Please select only one option)
    <TD VALIGN=center>
    <INPUT TYPE=radio NAME="dt" VALUE="back" CHECKED>
    <TD><SELECT NAME="dp">
    <OPTION VALUE="0" SELECTED="$(dp)">anytime
    <OPTION VALUE="10M" SELECTED="$(dp)">in the last ten minutes
    <OPTION VALUE="1h" SELECTED="$(dp)">in the last hour
    <OPTION VALUE="7d" SELECTED="$(dp)">in the last week
    <OPTION VALUE="14d" SELECTED="$(dp)">in the last 2 weeks
    <OPTION VALUE="1m" SELECTED="$(dp)">in the last month
    <OPTION VALUE="3m" SELECTED="$(dp)">in the last 3 months
    <OPTION VALUE="6m" SELECTED="$(dp)">in the last 6 months
    <OPTION VALUE="1y" SELECTED="$(dp)">in the last year
    <OPTION VALUE="2y" SELECTED="$(dp)">in the last 2 years
    <TD VALIGN=center><INPUT type=radio NAME="dt" VALUE="er">
    <TD><SELECT NAME="dx">
    <OPTION VALUE="1" SELECTED="$(dx)">After
    <OPTION VALUE="-1" SELECTED="$(dx)">Before

    or on

    <SELECT NAME="dm">
    <OPTION VALUE="0" SELECTED="$(dm)">January
    <OPTION VALUE="1" SELECTED="$(dm)">February
    <OPTION VALUE="2" SELECTED="$(dm)">March
    <OPTION VALUE="3" SELECTED="$(dm)">April
    <OPTION VALUE="4" SELECTED="$(dm)">May
    <OPTION VALUE="5" SELECTED="$(dm)">June
    <OPTION VALUE="6" SELECTED="$(dm)">July
    <OPTION VALUE="7" SELECTED="$(dm)">August
    <OPTION VALUE="8" SELECTED="$(dm)">September
    <OPTION VALUE="9" SELECTED="$(dm)">October
    <OPTION VALUE="10" SELECTED="$(dm)">November
    <OPTION VALUE="11" SELECTED="$(dm)">December
    <INPUT TYPE=text NAME="dd" VALUE="$(dd)" SIZE=2 maxlength=2>
    <SELECT NAME="dy" >
    <OPTION VALUE="1990" SELECTED="$(dy)">1990
    <OPTION VALUE="1991" SELECTED="$(dy)">1991
    <OPTION VALUE="1992" SELECTED="$(dy)">1992
    <OPTION VALUE="1993" SELECTED="$(dy)">1993
    <OPTION VALUE="1994" SELECTED="$(dy)">1994
    <OPTION VALUE="1995" SELECTED="$(dy)">1995
    <OPTION VALUE="1996" SELECTED="$(dy)">1996
    <OPTION VALUE="1997" SELECTED="$(dy)">1997
    <OPTION VALUE="1998" SELECTED="$(dy)">1998
    <OPTION VALUE="1999" SELECTED="$(dy)">1999
    <OPTION VALUE="2000" SELECTED="$(dy)">2000
    <OPTION VALUE="2001" SELECTED="$(dy)">2001
    <TD VALIGN=center><INPUT TYPE=radio NAME="dt" VALUE="range">
    <INPUT TYPE=text NAME="db" VALUE="$(db)" SIZE=11 MAXLENGTH=11>
    <INPUT TYPE=text NAME="de" VALUE="$(de)" SIZE=11 MAXLENGTH=11>
    <!-- end of stl options -->

BOTTOM This section is always included last in every page. So you should provide all closing tags which have their counterparts in top section. Although it is not obligatory to place this section at the end of template file, but doing so will help you to view your template as an ordinary html file in a browser to get the idea how it's look like.

Below is an example of bottom section:

<DIV ALIGN=right>
<A HREF=""><IMG SRC="mnoGoSearch.gif" BORDER=0
ALT="[Powered by mnoGoSearch search engine software]"></A>

RESTOP This section is included just before the search results. It's a good idea to provide some common search results. You can do so by using the next meta symbols:

  • $(first) - number of First document displayed on this page

  • $(last) - number of Last document displayed on this page

  • $(total) - Total number of found documents

  • $(W) - information about the number of word forms found, e.g. if your query was html template $(W) can be something like html: 10 template: 20 and about words that was excluded from search (e.g. if: stopword)

Below is an example of 'restop' section:

Displaying documents $(first)-$(last) of total <B>$(total)</B> found.

RES - This section is used for displaying various information about every found document. The following meta symbols are used:

  • $(DU) Document URL

  • $(DT) Document Title

  • $(DR) Document Rating (as calculated by mnoGoSearch

  • $(DX) Document text (the first couple of lines to give an idea of what the document is about).

  • $(DC) Document Content-type (for example, text/html)

  • $(DM) Document Last-Modified date

  • $(DS) Document Size (in bytes)

  • $(DN) Document Number (in order of appearance)

  • $(DD) Document Description (from META DESCRIPTION tag)

  • $(DE) if non empty $DD then $DD else $DX

  • $(DK) Document Keywords (from META KEYWORDS tag)

  • $(DY) Document category with links, i.e. /home/computers/software/www/

  • $(CL) Clone List (see section 'clone' for details)

Here is an example of res section:

<b>$(DN).</b><a href="$(DU)" TARGET="_blank"><b>$(DT)
</b></a> [<b>$(DR)</b>]<DD>
<b>URL: </b><A HREF="$(DU)" TARGET="_blank">$(DU)</A>($(DC))<BR>
$(DM), $(DS) bytes<BR>
<b>Description: </b>$(DD)<br>
<b>Keywords: </b>$(DK)<br>

CLONE - The contents of this section is included in result just instead of $CL meta symbol for every document clone found. This is used to provide all URLs with the same contents (like mirrors etc.). You can use the same $(D*) meta symbols here as in 'res' section. Of course, some information about clone, like $(DS), $(DR), $(DX) will be the same so it is of little use to place it here.

Below is an example of 'clone' section.

<li><A HREF="$DU" TARGET="_blank">$(DU)</A> ($(DC)) $DM

RESBOT - This is included just after last 'res' section. You usually give a navigation bar here to allow user go to next/previous results page.

Navigator is a complex thing and therefore is constructed from the following template sections: navleft, navleft_nop

These are used for printing the link to the previous page. If that page exists, <!--navleft--> is used, and on the first page there is no previous page, so <!--navleft_nop--> is used.

<TD><A HREF="$(NH)"><IMG...></A><BR><A HREF="$(NH)">Prev</A></TD>

<TD><IMG...><BR><FONT COLOR=gray>Prev</FONT></TD>

navbar0 - This is used for printing the current page in the page list.


navright, navright_nop - These are used for printing the link to the next page. If that page exists, <!--navright--> is used, and on the last page <!--navright_nop--> is used instead.

<TD><A HREF="$(NH)"><IMG...></A><BR><A HREF="$(NH)">Next</A></TD>

<TD><IMG...><BR><FONT COLOR=gray>Next</FONT></TD>

navbar1 - This is used for printing the links to the other pages in the page list.

<TD><A HREF="$(HR)"><IMG...></A><BR><A HREF="$(NH)">$(NN)</A></TD>

This is an example of 'resbot' section:

Result pages: $(NL)$(NB)$(NR)

notfound - As its name implies, this section is displayed in case when no documents are found. You usually give a little message saying that and maybe some hints how to make search less restrictive.

Below is an example of notfound section:

Sorry, but search hasn't returned results.<P>
<I>Try to compose less restrictive search query or check spelling.</I>

noquery - This section is displayed in case when user gives an empty query. Below is an example of noquery section:

You haven't typed any word(s) to search for.

error - This section is displayed in case some internal error occurred while searching. For example, database server is not running or so. You may provide the following meta symbol:$(E) - error text.

Example of error section:

<FONT COLOR="#FF0000">An error occured!</FONT>

Variables section

There is also a special variables section, in which you can set up some values for search.

Special variables section usually looks like this:

DBAddr		mysql://foo:bar@localhost/search/
DBMode		single
LocalCharset	iso-8859-1
BrowserCharset  iso-8859-1
TrackQuery	no
Cache		no
DetectClones	yes
HlBeg		<font color="blue"><b><i>
HlEnd		</i></b>
R1		100
R2		256
Synonym		synonym/english.syn


Database option DBAddr works only for SQL back-end and does not matter for built-in text files support (mnoGoSearch Lite). Like in indexer.conf, host part in DBAddr argument takes affect for natively supported databases only and does not matter for ODBC databases. In case of ODBC use database name part of DBAddr to specify ODBC DSN.

LocalCharset specifies a charset of database. It must be the same with indexer.conf LocalChatser.

BrowserCharset specifies which charset will be used to display results. It may differ from LocalCharset. All template variables which correspond data from search result (such as document title, description, text) will be converted from LocalCharset to BrowserCharset. Contents of template itself is not converted, it must be in BrowserCharset.

Use "Cache yes/no" to enable/disable search results cache.

Use "Clone yes/no" to enable/disable closes detection.

HlBeg and HlEnd commands are used to configure search results highlighting. Found words will be surrounded in those tags.

There is an Alias command in search.htm, that is similar to the one in indexer.conf, but it affects only search results while having no effect on indexing. See Aliases section for details.

R1 and R2 specify ranges for random variables $(R1) and $(R2).

Synonym command is used to load specified synonyms list. Synonyms file name is either absolute or relative to /etc directory of mnoGoSearch installation.

Includes in templates

You may use <!INCLUDE Content="http://hostname/path"> to include external URLs into search results.

WARNING: You can use <!INCLUDE> ONLY in the following template sections:


This is an example of includes usage:

<!INCLUDE CONTENT="http://hostname/banner?query=$&(q)">

Using several formats with one template

mnoGoSearch allows to define several (up to 100) descriptions for the same template section. It is often reasonable, for example, to have both "Long" and "Short" search results format. To implement this just write two separate "res" template sections for "Long" and "Short" result output formats one by one. Note that "res" is not the only section - every template section may be given several times. So, it is easy for example to prepare multi-language templates.

Copyright © 2000-2015 Lavtech.Com Corp.