<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML ><HEAD ><TITLE >Searching documents</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" TITLE="mnoGoSearch 3.3.9 reference manual" HREF="index.html"><LINK REL="PREVIOUS" TITLE="Indexing multilingual servers" HREF="msearch-vary.html"><LINK REL="NEXT" TITLE="How to write search result templates " HREF="msearch-templates.html"><LINK REL="STYLESHEET" TYPE="text/css" HREF="mnogo.css"><META NAME="Description" CONTENT="mnoGoSearch - Full Featured Web site Open Source Search Engine Software over the Internet and Intranet Web Sites Based on SQL Database. It is a Free search software covered by GNU license."><META NAME="Keywords" CONTENT="shareware, freeware, download, internet, unix, utilities, search engine, text retrieval, knowledge retrieval, text search, information retrieval, database search, mining, intranet, webserver, index, spider, filesearch, meta, free, open source, full-text, udmsearch, website, find, opensource, search, searching, software, udmsearch, engine, indexing, system, web, ftp, http, cgi, php, SQL, MySQL, database, php3, FreeBSD, Linux, Unix, mnoGoSearch, MacOS X, Mac OS X, Windows, 2000, NT, 95, 98, GNU, GPL, url, grabbing"></HEAD ><BODY CLASS="chapter" BGCOLOR="#EEEEEE" TEXT="#000000" LINK="#000080" VLINK="#800080" ALINK="#FF0000" ><!--#include virtual="body-before.html"--><DIV CLASS="NAVHEADER" ><TABLE SUMMARY="Header navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TH COLSPAN="3" ALIGN="center" ><SPAN CLASS="application" >mnoGoSearch</SPAN > 3.3.9 reference manual: Full-featured search engine software</TH ></TR ><TR ><TD WIDTH="10%" ALIGN="left" VALIGN="bottom" ><A HREF="msearch-vary.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="80%" ALIGN="center" VALIGN="bottom" ></TD ><TD WIDTH="10%" ALIGN="right" VALIGN="bottom" ><A HREF="msearch-templates.html" ACCESSKEY="N" >Next</A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><DIV CLASS="chapter" ><H1 ><A NAME="doingsearch" ></A >Chapter 10. Searching documents</H1 ><DIV CLASS="TOC" ><DL ><DT ><B >Table of Contents</B ></DT ><DT ><A HREF="msearch-doingsearch.html#search" >Using search front-ends</A ></DT ><DT ><A HREF="msearch-templates.html" >How to write search result templates <A NAME="AEN5107" ></A ></A ></DT ><DT ><A HREF="msearch-html.html" >Designing <TT CLASS="filename" >search.htm</TT ></A ></DT ><DT ><A HREF="msearch-templates-oper.html" >Template operators</A ></DT ><DT ><A HREF="msearch-rel.html" >Ranking documents <A NAME="AEN5868" ></A ></A ></DT ><DT ><A HREF="msearch-track.html" >Tracking search queries <A NAME="AEN6117" ></A ></A ></DT ><DT ><A HREF="msearch-srcache.html" >Search results cache <A NAME="AEN6144" ></A ></A ></DT ><DT ><A HREF="msearch-fuzzy.html" >Fuzzy search</A ></DT ></DL ></DIV ><DIV CLASS="sect1" ><H1 CLASS="sect1" ><A NAME="search" >Using search front-ends</A ></H1 ><DIV CLASS="sect2" ><H2 CLASS="sect2" ><A NAME="search-perform" >Performing search</A ></H2 ><P >Open your preferred front-end in Web browser: <PRE CLASS="programlisting" > http://your.web.server/path/to/search.cgi </PRE > or <PRE CLASS="programlisting" > http://your.web.server/path/to/search.php </PRE > or <PRE CLASS="programlisting" > http://your.web.server/path/to/search.pl </PRE > </P ><P >To start search, type the words you want to find and press the <TT CLASS="literal" >SUBMIT</TT > button. For example, ``<KBD CLASS="userinput" >MySQL ODBC</KBD >''. <SPAN CLASS="application" >mnoGoSearch</SPAN > will find documents having the words <TT CLASS="literal" >MySQL</TT > and/or <TT CLASS="literal" >ODBC</TT >. The best matching documents will be displayed in the top of the search results. <DIV CLASS="note" ><BLOCKQUOTE CLASS="note" ><P ><B >Note: </B > The quote signs <TT CLASS="literal" >``</TT > and <TT CLASS="literal" >''</TT > are not parts of the search query. They are used in this example and in the other examples given in the manual to separate search queries from the other text. </P ></BLOCKQUOTE ></DIV > <DIV CLASS="note" ><BLOCKQUOTE CLASS="note" ><P ><B >Note: </B > <SPAN CLASS="application" >mnoGoSearch</SPAN > works case insensitively. The case of the letters in a search query does not matter. </P ></BLOCKQUOTE ></DIV > </P ></DIV ><DIV CLASS="sect2" ><H2 CLASS="sect2" ><A NAME="search-params" >Search parameters <A NAME="AEN4440" ></A ></A ></H2 ><P ><SPAN CLASS="application" >mnoGoSearch</SPAN > front-ends support the following <ACRONYM CLASS="acronym" >CGI</ACRONYM > query string parameters (which can be used in the <ACRONYM CLASS="acronym" >HTML</ACRONYM > search form variables). </P ><DIV CLASS="note" ><BLOCKQUOTE CLASS="note" ><P ><B >Note: </B > Search parameters can also be set in the <TT CLASS="literal" ><--variables</TT > section in <TT CLASS="filename" >search.htm</TT > with help of the <B CLASS="command" ><A HREF="msearch-cmdref-replacevar.html" >ReplaceVar</A ></B > command. </P ></BLOCKQUOTE ></DIV ><DIV CLASS="table" ><A NAME="AEN4452" ></A ><P ><B >Table 10-1. Available search parameters</B ></P ><TABLE BORDER="1" CLASS="CALSTABLE" ><COL><COL><TBODY ><TR ><TD >q</TD ><TD >text parameter with the search query words</TD ></TR ><TR ><TD >s</TD ><TD >a character sequence specifying the result <SPAN CLASS="emphasis" ><I CLASS="emphasis" >sorting order</I ></SPAN >. Small letters mean ascending order, capital letters mean descending order. The following letters are understood: <CODE CLASS="option" >R</CODE > or <CODE CLASS="option" >r</CODE > - for sorting by <SPAN CLASS="emphasis" ><I CLASS="emphasis" >score</I ></SPAN >, <CODE CLASS="option" >P</CODE > or <CODE CLASS="option" >p</CODE > - for sorting by <SPAN CLASS="emphasis" ><I CLASS="emphasis" >Popularity Rank</I ></SPAN >, <CODE CLASS="option" >D</CODE > or <CODE CLASS="option" >d</CODE > - for sorting by <SPAN CLASS="emphasis" ><I CLASS="emphasis" >modification date</I ></SPAN >. <CODE CLASS="option" >U</CODE > or <CODE CLASS="option" >u</CODE > - for sorting by <SPAN CLASS="emphasis" ><I CLASS="emphasis" >URL</I ></SPAN >. <CODE CLASS="option" >S</CODE > or <CODE CLASS="option" >s</CODE > - for sorting by a user defined section (see also the <CODE CLASS="option" >su</CODE > parameter). The default value is <CODE CLASS="option" >R</CODE >, which means sorting in descending score order. </TD ></TR ><TR ><TD >su</TD ><TD >the user defined section name to sort results when <CODE CLASS="option" >s=S</CODE > or <CODE CLASS="option" >s=s</CODE > is given. <DIV CLASS="note" ><BLOCKQUOTE CLASS="note" ><P ><B >Note: </B > Use the <B CLASS="command" ><A HREF="msearch-cmdref-userorder.html" >UserOrder</A ></B > command to improve performance of sorting by a user defined section. </P ></BLOCKQUOTE ></DIV > </TD ></TR ><TR ><TD >sl.*</TD ><TD >a <SPAN CLASS="emphasis" ><I CLASS="emphasis" >section limit</I ></SPAN >. You can limit searches using a certain value of a desired section. For example, <CODE CLASS="option" >sl.title=Top</CODE > will only search among the documents having <TT CLASS="literal" >title</TT > equal to <TT CLASS="literal" >Top</TT >. Section values support <ACRONYM CLASS="acronym" >SQL</ACRONYM > wildcards <TT CLASS="literal" >%</TT > and <TT CLASS="literal" >_</TT >. <PRE CLASS="programlisting" > <SELECT NAME="sl.title" MULTIPLE> <OPTION VALUE="%2008%">2008</OPTION> <OPTION VALUE="%2008%">2007</OPTION> </SELECT> </PRE > The above code in the <ACRONYM CLASS="acronym" >HTML</ACRONYM > search form will limit searches to the documents having the substrings <TT CLASS="literal" >2007</TT > or <TT CLASS="literal" >2008</TT > in their titles, according to the user choice. </TD ></TR ><TR ><TD >fl</TD ><TD >Loads a <SPAN CLASS="emphasis" ><I CLASS="emphasis" >fast limit</I ></SPAN > with the given name pattern. The limit should be previously defined using the <A HREF="msearch-cmdref-limit.html" >Limit</A > command. If the <CODE CLASS="option" >fl</CODE > value starts with <TT CLASS="literal" >minus</TT > character, the limit is considered as <SPAN CLASS="emphasis" ><I CLASS="emphasis" >excluding</I ></SPAN > limit. For example, <CODE CLASS="option" >fl=-name</CODE > restricts search to the documents <SPAN CLASS="emphasis" ><I CLASS="emphasis" >not</I ></SPAN > covered by the limit <TT CLASS="literal" >name</TT >. <ACRONYM CLASS="acronym" >SQL</ACRONYM > <B CLASS="command" >LIKE</B > operator is used when loading fast limits during search time, so <TT CLASS="literal" >%</TT > and <TT CLASS="literal" >_</TT > wildcards can be used in the <CODE CLASS="option" >fl</CODE > pattern. If the pattern matches multiple limits, search is restricted to the documents covered by either of them. If an <SPAN CLASS="emphasis" ><I CLASS="emphasis" >excluding</I ></SPAN > limit pattern matches multiple limits, search is restricted to the documents covered by non of them. </TD ></TR ><TR ><TD >ps</TD ><TD >page size, the number of documents displayed on one page, <TT CLASS="literal" >10</TT > by default. </TD ></TR ><TR ><TD >np</TD ><TD >the current page number, <TT CLASS="literal" >0</TT > by default (the first page) </TD ></TR ><TR ><TD >offs</TD ><TD >search result start point (offset). <TT CLASS="literal" >0</TT > by default (meaning <SPAN CLASS="emphasis" ><I CLASS="emphasis" >display starting from the first document</I ></SPAN >). <CODE CLASS="varname" >offs</CODE > is an alternative way to <CODE CLASS="varname" ></CODE > to set the desired offset. <KBD CLASS="userinput" >np=2&ps=10</KBD > is effectively the same to <KBD CLASS="userinput" >offs=20&ps=10</KBD >, and both mean <SPAN CLASS="emphasis" ><I CLASS="emphasis" >display <TT CLASS="literal" >10</TT > documents starting from <TT CLASS="literal" >21</TT ></I ></SPAN >. If both <CODE CLASS="varname" >offs</CODE > and <CODE CLASS="varname" >np</CODE > are specified, then <CODE CLASS="varname" >np</CODE > is ignored. <DIV CLASS="note" ><BLOCKQUOTE CLASS="note" ><P ><B >Note: </B > Using <CODE CLASS="varname" >offs</CODE > you can display results starting from an arbitrary offset, even in the "middle" of a page, for example: <KBD CLASS="userinput" >offs=5&ps=10</KBD > means <SPAN CLASS="emphasis" ><I CLASS="emphasis" >display <TT CLASS="literal" >10</TT > documents starting from <TT CLASS="literal" >5</TT ></I ></SPAN >. </P ></BLOCKQUOTE ></DIV > </TD ></TR ><TR ><TD >m</TD ><TD >search mode. <TT CLASS="literal" >all</TT > and <TT CLASS="literal" >any</TT > values are supported. The default value is <TT CLASS="literal" >all</TT >. </TD ></TR ><TR ><TD >wm</TD ><TD >word match type. The available values are <TT CLASS="literal" >wrd</TT >, <TT CLASS="literal" >beg</TT >, <TT CLASS="literal" >end</TT > and <TT CLASS="literal" >sub</TT > respectively meaning <SPAN CLASS="emphasis" ><I CLASS="emphasis" >whole word</I ></SPAN >, <SPAN CLASS="emphasis" ><I CLASS="emphasis" >word beginning</I ></SPAN >, <SPAN CLASS="emphasis" ><I CLASS="emphasis" >word ending</I ></SPAN > and <SPAN CLASS="emphasis" ><I CLASS="emphasis" >word substring</I ></SPAN > match, with the <SPAN CLASS="emphasis" ><I CLASS="emphasis" >whole word</I ></SPAN > match type by default. Mininum word length for substring match is controlled by the <A HREF="msearch-cmdref-substringmatchminwordlength.html" >SubstringMatchMinWordLength</A > command in <TT CLASS="filename" >search.htm</TT >. See also <A HREF="msearch-howstore.html#sql-stor-noncrc" >the Section called <I >Substring search notes</I > in Chapter 7</A >. </TD ></TR ><TR ><TD >t</TD ><TD >A <B CLASS="command" ><A HREF="msearch-cmdref-tag.html" >Tag</A ></B > limit. Limits search through the documents with the given tag only. This parameter has a similar effect to the <CODE CLASS="option" >-t</CODE > option in <SPAN CLASS="application" >indexer</SPAN > command line </TD ></TR ><TR ><TD >cat</TD ><TD >A <B CLASS="command" ><A HREF="msearch-cmdref-category.html" >Category</A ></B > limit. Take a look into <A HREF="msearch-subsections.html#categories" >the Section called <I >Categories <A NAME="AEN3655" ></A ></I > in Chapter 8</A > for details. </TD ></TR ><TR ><TD >ul</TD ><TD > <P > An <ACRONYM CLASS="acronym" >URL</ACRONYM > limit. Limits search results by an <ACRONYM CLASS="acronym" >URL</ACRONYM > pattern. If the <CODE CLASS="option" >ul</CODE > value represents a relative <ACRONYM CLASS="acronym" >URL</ACRONYM >, then <SPAN CLASS="application" >search.cgi</SPAN > automatically adds <TT CLASS="literal" >%</TT > wildcards before and after the <TT CLASS="literal" >ul</TT > value. For example: <PRE CLASS="programlisting" > <OPTION VALUE="/manual/"> </PRE > will add <TT CLASS="literal" >(url LIKE '%/manual/%')</TT > condition into the <ACRONYM CLASS="acronym" >SQL</ACRONYM > query. If the <CODE CLASS="option" >ul</CODE > value is an absolute <ACRONYM CLASS="acronym" >URL</ACRONYM > with schema, then <SPAN CLASS="application" >search.cgi</SPAN > will add <TT CLASS="literal" >%</TT > sign only in the end of the value. For example for: <PRE CLASS="programlisting" > <OPTION VALUE="http://localhost/"> </PRE > <SPAN CLASS="application" >search.cgi</SPAN > will add <TT CLASS="literal" >(url LIKE 'http://localhost/%')</TT > condition. </P > <DIV CLASS="note" ><BLOCKQUOTE CLASS="note" ><P ><B >Note: </B > Using an absolute <ACRONYM CLASS="acronym" >URL</ACRONYM > is more efficient as it can use <ACRONYM CLASS="acronym" >SQL</ACRONYM > indexes for optimization. </P ></BLOCKQUOTE ></DIV > <P > Additionally to the automatically added wildcards, you can use your own <TT CLASS="literal" >%</TT > and <TT CLASS="literal" >_</TT > wildcards in the pattern. For example: <PRE CLASS="programlisting" > <OPTION VALUE="http://localhost/%/archive/"> </PRE > </P > <P > Multiple <CODE CLASS="option" >ul</CODE > values can be given in the query string, which allows to use a <TT CLASS="literal" >SELECT MULTIPLE</TT > input type in the <ACRONYM CLASS="acronym" >HTML</ACRONYM > search form. Multiple values are joined using the <TT CLASS="literal" >OR</TT > condition. For example, when a user selects both options from this list: <PRE CLASS="programlisting" > <SELECT NAME="ul" MULTIPLE> <OPTION VALUE="/dir1/">Dir1</OPTION> <OPTION VALUE="/dir2/">Dir2</OPTION> </SELECT> </PRE > <SPAN CLASS="application" >search.cgi</SPAN > will add <TT CLASS="literal" >(url LIKE '%/dir1/%' OR url LIKE '%/dir2/%')</TT > condition into the search query. </P > </TD ></TR ><TR ><TD >ue</TD ><TD > <P > Limits the search results by excluding the documents matching the given <ACRONYM CLASS="acronym" >URL</ACRONYM > pattern. </P > <P > The <CODE CLASS="option" >ue</CODE > parameter detects absolute and relative <ACRONYM CLASS="acronym" >URL</ACRONYM > patterns and automatically adds wildcards, and supports your own wildcards, similarly to the <CODE CLASS="option" >ul</CODE > parameter. </P > <P > Multiple <CODE CLASS="option" >ue</CODE > parameters are also understood to exclude multiple <ACRONYM CLASS="acronym" >URL</ACRONYM > patterns at the same time. Multiple parameters are joined using the <TT CLASS="literal" >AND</TT > <ACRONYM CLASS="acronym" >SQL</ACRONYM > operator. For example, when a user selects both options from this list: <PRE CLASS="programlisting" > <SELECT NAME="ue" MULTIPLE> <OPTION VALUE="/dir1/">Dir1</OPTION> <OPTION VALUE="/dir2/">Dir2</OPTION> </SELECT> </PRE > <SPAN CLASS="application" >search.cgi</SPAN > will add <TT CLASS="literal" >(url NOT LIKE '%/dir1/%' AND url NOT LIKE '%/dire2/%')</TT > condition into the search query. </P > <DIV CLASS="note" ><BLOCKQUOTE CLASS="note" ><P ><B >Note: </B > The <CODE CLASS="option" >ul</CODE > and <CODE CLASS="option" >ue</CODE > parameters can be given at the same time. </P ></BLOCKQUOTE ></DIV > </TD ></TR ><TR ><TD >wf</TD ><TD > A <SPAN CLASS="emphasis" ><I CLASS="emphasis" >weight factor</I ></SPAN > vector. It allows to change weights of the different document sections at search time. The <CODE CLASS="option" >wf</CODE > value should be passed in the form of a hexadecimal number. Check the explanation below. </TD ></TR ><TR ><TD >nwf</TD ><TD > A <SPAN CLASS="emphasis" ><I CLASS="emphasis" >No section</I ></SPAN > weight factor vector. See the explanation below. </TD ></TR ><TR ><TD >g</TD ><TD >A <SPAN CLASS="emphasis" ><I CLASS="emphasis" >language limit</I ></SPAN > to find documents only in the given language. The value should be a two-letter language abbreviation. Have a look into <A HREF="msearch-vary.html" >the Section called <I >Indexing multilingual servers</I > in Chapter 9</A > for details. An <ACRONYM CLASS="acronym" >HTML</ACRONYM > form example: <PRE CLASS="programlisting" > <SELECT NAME="g"> <OPTION VALUE="" SELECTED="$(g)">All language <OPTION VALUE="en" SELECTED="$(g)">English <OPTION VALUE="de" SELECTED="$(g)">German <OPTION VALUE="ru" SELECTED="$(g)">Russian </SELECT> </PRE > </TD ></TR ><TR ><TD >tmplt</TD ><TD >The search template file name (without path), to specify the template file to use instead of the default file <TT CLASS="filename" >search.htm</TT >. </TD ></TR ><TR ><TD >type</TD ><TD >A <SPAN CLASS="emphasis" ><I CLASS="emphasis" >Content-Type</I ></SPAN > limit to find documents with the given type, for example <TT CLASS="literal" >application/pdf</TT >. Multiple <CODE CLASS="option" >type</CODE > parameters can be passed in the same query. <ACRONYM CLASS="acronym" >SQL</ACRONYM > <B CLASS="command" >LIKE</B > patterns are also understood. </TD ></TR ><TR ><TD >sp</TD ><TD >Defines whether to use <SPAN CLASS="emphasis" ><I CLASS="emphasis" >stemming</I ></SPAN >. <CODE CLASS="option" >sp=1</CODE > tells <SPAN CLASS="application" >search.cgi</SPAN > to use the <SPAN CLASS="application" >Ispell</SPAN > commands given in <TT CLASS="filename" >search.htm</TT >. <CODE CLASS="option" >sp=0</CODE > makes <SPAN CLASS="application" >search.cgi</SPAN > ignore all <SPAN CLASS="application" >Ispell</SPAN > commands and therefore return only the exact word forms entered by the user. The default value is <TT CLASS="literal" >1</TT >. See <A HREF="msearch-fuzzy.html#ispell" >the Section called <I >Ispell <A NAME="AEN6171" ></A ></I ></A > for details. </TD ></TR ><TR ><TD >sy</TD ><TD >Defines whether to use <SPAN CLASS="emphasis" ><I CLASS="emphasis" >synonyms</I ></SPAN >. <CODE CLASS="option" >sy=1</CODE > allows using the <A HREF="msearch-fuzzy.html#synonyms" >synonym</A > type of fuzzy search. <CODE CLASS="option" >sy=0</CODE > makes <SPAN CLASS="application" >search.cgi</SPAN > ignore all synonym-related commands. The default value is <TT CLASS="literal" >1</TT >. </TD ></TR ><TR ><TD >tl</TD ><TD >Defines whether to use the <SPAN CLASS="emphasis" ><I CLASS="emphasis" ><A HREF="msearch-fuzzy.html#translit" >transliteration</A ></I ></SPAN > type of fuzzy search. <CODE CLASS="option" >tl=yes</CODE > or <CODE CLASS="option" >tl=1</CODE > means to use transliteration. <CODE CLASS="option" >tl=no</CODE > or <CODE CLASS="option" >tl=0</CODE > means to switch transliteration off. The default value is <TT CLASS="literal" >0</TT >. </TD ></TR ><TR ><TD >dt</TD ><TD >A <SPAN CLASS="emphasis" ><I CLASS="emphasis" >time</I ></SPAN > limit. Three time limit types are supported. <P > <CODE CLASS="option" >dt=back</CODE > limits the result to <SPAN CLASS="emphasis" ><I CLASS="emphasis" >recent</I ></SPAN > documents, modified within the period of time between <TT CLASS="literal" >now</TT > and back to the past up to the given period of time. The period is to be passed using the <CODE CLASS="option" >dp</CODE > parameter. </P > <P >If <CODE CLASS="option" >dt=er</CODE > is given, then search results are limited to the documents newer or older than the given date value. <CODE CLASS="option" >dx=1</CODE > means <TT CLASS="literal" >newer</TT > (or <TT CLASS="literal" >after</TT >). <CODE CLASS="option" >dx=-1</CODE > means <TT CLASS="literal" >older</TT > (or <TT CLASS="literal" >before</TT >). The date value is specified using the <CODE CLASS="option" >dy</CODE >, <CODE CLASS="option" >dm</CODE >, and <CODE CLASS="option" >dd</CODE > parameters. </P > <P >If <CODE CLASS="option" >dt=range</CODE > is given, then search returns documents modified within the given date range. The parameters <CODE CLASS="option" >db</CODE > and <CODE CLASS="option" >de</CODE > are used to pass the first and the last dates. </P > </TD ></TR ><TR ><TD >dp</TD ><TD >A "<SPAN CLASS="emphasis" ><I CLASS="emphasis" >recentness</I ></SPAN >" limit. To be used in combination with <CODE CLASS="option" >dt=back</CODE >. <CODE CLASS="option" >dp</CODE > should be specified using the <TT CLASS="literal" >xxxA[yyyB[zzzC]]</TT > format. <CODE CLASS="varname" >xxx</CODE >, <CODE CLASS="varname" >yyy</CODE >, <CODE CLASS="varname" >zzz</CODE > are numbers (can be negative!). <CODE CLASS="varname" >A</CODE >, <CODE CLASS="varname" >B</CODE >, <CODE CLASS="varname" >C</CODE > are <SPAN CLASS="emphasis" ><I CLASS="emphasis" >field descriptors</I ></SPAN >, similar to the descriptors <CODE CLASS="function" >strptime()</CODE > and <CODE CLASS="function" >strftime()</CODE > <SPAN CLASS="application" >C</SPAN > functions use, with the following meaning: <TT CLASS="literal" >s</TT > - second, <TT CLASS="literal" >M</TT > - minute, <TT CLASS="literal" >h</TT > - hour, <TT CLASS="literal" >d</TT > - day, <TT CLASS="literal" >m</TT > - month, <TT CLASS="literal" >y</TT > - year. For example: <PRE CLASS="programlisting" > 4h30m - 4 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 </PRE > </TD ></TR ><TR ><TD >dx</TD ><TD >The <TT CLASS="literal" >newer</TT >/<TT CLASS="literal" >older</TT > flag. <CODE CLASS="option" >dx=1</CODE > means <TT CLASS="literal" >newer</TT >. <CODE CLASS="option" >dx=-1</CODE > means <TT CLASS="literal" >older</TT >. <CODE CLASS="option" >dx</CODE > is to be used together with <CODE CLASS="option" >dt=er</CODE >. </TD ></TR ><TR ><TD >dm</TD ><TD >Month (when <CODE CLASS="option" >dt=er</CODE >), starting from <TT CLASS="literal" >0</TT >: <TT CLASS="literal" >0</TT > - January, <TT CLASS="literal" >1</TT > - February, ... , <TT CLASS="literal" >11</TT > - December. </TD ></TR ><TR ><TD >dy</TD ><TD >Year (when <CODE CLASS="option" >dt=er</CODE >), using the four digit format. For example: <CODE CLASS="option" >dy=2008</CODE >. </TD ></TR ><TR ><TD >dd</TD ><TD >Day (when <CODE CLASS="option" >dt=er</CODE >), a number in the range <TT CLASS="literal" >1</TT >...<TT CLASS="literal" >31</TT >. </TD ></TR ><TR ><TD >db</TD ><TD > The <SPAN CLASS="emphasis" ><I CLASS="emphasis" >beginning date</I ></SPAN > (when <CODE CLASS="option" >dt=range</CODE >), using the <TT CLASS="literal" >dd/mm/yyyy</TT > format. </TD ></TR ><TR ><TD >de</TD ><TD >The <SPAN CLASS="emphasis" ><I CLASS="emphasis" >end date</I ></SPAN > (when <CODE CLASS="option" >dt=range</CODE >), using the <TT CLASS="literal" >dd/mm/yyyy</TT > format. </TD ></TR ><TR ><TD >us</TD ><TD >Specifies the name of the <SPAN CLASS="emphasis" ><I CLASS="emphasis" >user defined score</I ></SPAN > list which should be loaded and mixed with the score values internally calculated by <SPAN CLASS="application" >mnoGoSearch</SPAN >, according to <A HREF="msearch-cmdref-userscore.html" >UserScore</A > and <A HREF="msearch-cmdref-userscorefactor.html" >UserScoreFactor</A > configuration. If <CODE CLASS="option" >us</CODE > is empty, or there is no a <A HREF="msearch-cmdref-userscore.html" >UserScore</A > command with the given name, <CODE CLASS="option" >us</CODE > is ignored. </TD ></TR ><TR ><TD >ss</TD ><TD >Specifies the name of the <SPAN CLASS="emphasis" ><I CLASS="emphasis" >user defined site score</I ></SPAN > list which should be loaded and mixed with the scores internally calculated by <SPAN CLASS="application" >mnoGoSearch</SPAN >, according to <A HREF="msearch-cmdref-usersitescore.html" >UserSiteScore</A > and <A HREF="msearch-cmdref-userscorefactor.html" >UserScoreFactor</A > configuration. If <CODE CLASS="option" >us</CODE > is empty, or there is no a <A HREF="msearch-cmdref-usersitescore.html" >UserSiteScore</A > command the given name, <CODE CLASS="option" >ss</CODE > is ignored. </TD ></TR ><TR ><TD >GroupBySite</TD ><TD >Enables or disables <SPAN CLASS="emphasis" ><I CLASS="emphasis" >grouping results by site</I ></SPAN >. Can be set to <TT CLASS="literal" >yes</TT > or <TT CLASS="literal" >no</TT >, with the default value <TT CLASS="literal" >no</TT >. This parameter has the same effect with the <A HREF="msearch-cmdref-groupbysite.html" >GroupBySite</A > <TT CLASS="filename" >search.htm</TT > command. </TD ></TR ></TBODY ></TABLE ></DIV ></DIV ><DIV CLASS="sect2" ><H2 CLASS="sect2" ><A NAME="search-changeweight" >Changing weights of the different document parts at search time</A ></H2 ><P >Changing weights (importance) of the different document parts (sections) is possible with help of the <CODE CLASS="option" >wf</CODE > <ACRONYM CLASS="acronym" >HTML</ACRONYM > form variable passed to <SPAN CLASS="application" >search.cgi</SPAN >. </P ><P >To be able to use this feature, it is recommended to set different section IDs for different document parts in the <B CLASS="command" ><A HREF="msearch-cmdref-section.html" >Section</A ></B > command in <TT CLASS="filename" >indexer.conf</TT >. Currently up to <TT CLASS="literal" >256</TT > separate sections are supported. </P ><P >Imagine that we have these default sections in <TT CLASS="filename" >indexer.conf</TT >: <PRE CLASS="programlisting" > Section body 1 256 Section title 2 128 Section keywords 3 128 Section description 4 128 </PRE > </P ><P >The <CODE CLASS="option" >wf</CODE > value is a string of hexadecimal digits <TT CLASS="literal" >ABCD</TT >, where every digit represents a weight factor for the corresponding section. The rightmost digit corresponds to the section with <CODE CLASS="varname" >ID</CODE >=<TT CLASS="literal" >1</TT >. If a weight factor for some section is <TT CLASS="literal" >0</TT >, then this section is totally ignored at search time. </P ><P > For the given above section configuration: </P ><P CLASS="literallayout" ><br> <CODE CLASS="varname" >D</CODE > is a factor for section 1 (body)<br> <CODE CLASS="varname" >C</CODE > is a factor for section 2 (title)<br> <CODE CLASS="varname" >B</CODE > is a factor for section 3 (keywords)<br> <CODE CLASS="varname" >A</CODE > is a factor for section 4 (description)<br> </P ><P > <P ><B >Examples:</B ></P > <P CLASS="literallayout" ><br> <CODE CLASS="option" >wf=0001</CODE > will search through the section <TT CLASS="literal" >body</TT > only.<br> <br> <CODE CLASS="option" >wf=1110</CODE > will search through the sections<br> <TT CLASS="literal" >title</TT >, <TT CLASS="literal" >keywords</TT >, <TT CLASS="literal" >description</TT >.<br> The section <TT CLASS="literal" >body</TT > will be ignored.<br> <br> <CODE CLASS="option" >wf=F421</CODE > will search through:<br> <TT CLASS="literal" >Description</TT > with factor <TT CLASS="literal" >15</TT > (<TT CLASS="literal" >F</TT > hex)<br> <TT CLASS="literal" >Keywords</TT > with factor <TT CLASS="literal" >4</TT ><br> <TT CLASS="literal" >Title</TT > with factor <TT CLASS="literal" >2</TT ><br> <TT CLASS="literal" >Body</TT > with factor <TT CLASS="literal" >1</TT ><br> </P > </P ><P > It is also possible to set the default <CODE CLASS="option" >wf</CODE > value using the <A HREF="msearch-cmdref-wf.html" >wf</A > <TT CLASS="filename" >search.htm</TT > command. If <CODE CLASS="option" >wf</CODE > is omitted in the query and there is no a <A HREF="msearch-cmdref-wf.html" >wf</A > command defined in <TT CLASS="filename" >search.htm</TT >, all section factors are considered to be equal to <TT CLASS="literal" >1</TT >, which means that all sections have the same weight. </P ><P > Starting from the version <TT CLASS="literal" >3.3.0</TT >, it is also possible to specify the <CODE CLASS="option" >wf</CODE > value as a <B CLASS="command" ><A HREF="msearch-cmdref-dbaddr.html" >DBAddr</A ></B > <TT CLASS="filename" >search.htm</TT > command parameter. This can be useful if you're using multiple <B CLASS="command" ><A HREF="msearch-cmdref-dbaddr.html" >DBAddr</A ></B > commands to merge search results from multiple databases and want to give higher or lower score to the results coming from a certain database. </P ><P > The <CODE CLASS="option" >nwf</CODE > search parameter uses the same format with <CODE CLASS="option" >wf</CODE >. If all found words appear only in a single section, then resulting score becomes lower. It can be used for example to ignore spam in the <TT CLASS="literal" >KEYWORDS</TT > meta tag. If you use high <CODE CLASS="option" >wf</CODE > and <CODE CLASS="option" >nwf</CODE > values for the section corresponding to the <TT CLASS="literal" >KEYWORDS</TT > meta tag, then score will be high only if <TT CLASS="literal" >KEYWORDS</TT > match the rest of the document, that is if the query words appear in <TT CLASS="literal" >KEYWORDS</TT > and <SPAN CLASS="emphasis" ><I CLASS="emphasis" >at the same time</I ></SPAN > in other sections (like <TT CLASS="literal" >title</TT > or <TT CLASS="literal" >body</TT >). If the query words are found in the section <TT CLASS="literal" >KEYWORDS</TT > alone, then score for this documents will be low. Starting from the version <TT CLASS="literal" >3.3.3</TT >, <CODE CLASS="option" >nwf</CODE > can also be set as a parameter to the <A HREF="msearch-cmdref-dbaddr.html" >DBAddr</A > command in <TT CLASS="filename" >search.htm</TT >. </P ></DIV ><DIV CLASS="sect2" ><H2 CLASS="sect2" ><A NAME="search-wordimportance" >Changing importance of individual query words</A ></H2 ><P ><SPAN CLASS="application" >mnoGoSearch</SPAN > search query language allows to specify different importance for individual search query words. The range of possible user-defined importance values is <TT CLASS="literal" >0-256</TT >. The the default value is <TT CLASS="literal" >256</TT > for all query words. You can change importance of some words using a special keyword <TT CLASS="literal" >importance</TT > immediately followed by a number and a semicolon character: <PRE CLASS="programlisting" > star wars importance10:movie </PRE > In the above example, importance for the words <TT CLASS="literal" >star</TT > and <TT CLASS="literal" >wars</TT > is <TT CLASS="literal" >256</TT > (the default values), while importance for the word <TT CLASS="literal" >movie</TT > is <TT CLASS="literal" >10</TT >, which makes it less important when ranking found documents. </P ><P > If you specify <KBD CLASS="userinput" >importance0:</KBD > for some query word, for example: <PRE CLASS="programlisting" > star wars importance0:movie </PRE > then this word will be <SPAN CLASS="emphasis" ><I CLASS="emphasis" >ignored only at ranking time</I ></SPAN >, however this word will still be required if you're doing an <TT CLASS="literal" >m=all</TT > search query (i.e. "<SPAN CLASS="emphasis" ><I CLASS="emphasis" >find all words</I ></SPAN >"). Therefore, in the above example, search will not return documents which don't have the word <TT CLASS="literal" >movie</TT >. </P ></DIV ><DIV CLASS="sect2" ><H2 CLASS="sect2" ><A NAME="search-scriptname" >Using <SPAN CLASS="application" >search.cgi</SPAN > with <ACRONYM CLASS="acronym" >SSI</ACRONYM ></A ></H2 ><P >When using a dynamic page (usually with the <TT CLASS="filename" >.shtml</TT > extension) with <SPAN CLASS="emphasis" ><I CLASS="emphasis" >server side includes</I ></SPAN > (<ACRONYM CLASS="acronym" >SSI</ACRONYM >) that calls <SPAN CLASS="application" >search.cgi</SPAN >, i.e. when <SPAN CLASS="application" >search.cgi</SPAN > is not called directly as a <ACRONYM CLASS="acronym" >CGI</ACRONYM > program, you may need to override the value available in the <SPAN CLASS="application" >Apache</SPAN >'s <CODE CLASS="envar" >SCRIPT_NAME</CODE > environment variable to make <SPAN CLASS="application" >search.cgi</SPAN > generate references back to the the <TT CLASS="filename" >.shtml</TT > page rather than to <SPAN CLASS="application" >search.cgi</SPAN >. </P ><P >For example, when an <TT CLASS="filename" >.shtml</TT > page contains this <ACRONYM CLASS="acronym" >SSI</ACRONYM > code: <PRE CLASS="programlisting" > <TT CLASS="literal" ><--#include virtual="search.cgi"></TT > </PRE > the <CODE CLASS="envar" >SCRIPT_NAME</CODE > variable will point to <SPAN CLASS="application" >search.cgi</SPAN >, not to the <TT CLASS="filename" >.shtml</TT > page. </P ><P >To override the <CODE CLASS="envar" >SCRIPT_NAME</CODE > variable, <SPAN CLASS="application" >mnoGoSearch</SPAN > checks the <CODE CLASS="envar" >UDMSEARCH_SELF</CODE > variable that you can add to the <SPAN CLASS="application" >Apache</SPAN >'s <TT CLASS="filename" >httpd.conf</TT > as follows: <PRE CLASS="programlisting" > SetEnv UDMSEARCH_SELF /path/to/search.shtml PassEnv UDMSEARCH_SELF </PRE > <SPAN CLASS="application" >search.cgi</SPAN > checks the <CODE CLASS="envar" >UDMSEARCH_SELF</CODE > variable first, and then <CODE CLASS="envar" >SCRIPT_NAME</CODE >. The found value is available in the <CODE CLASS="varname" >$(Self)</CODE > template variable, which you can use in the links. </P ></DIV ><DIV CLASS="sect2" ><H2 CLASS="sect2" ><A NAME="search-templates" >Using multiple templates</A ></H2 ><P >It is often required to use multiple templates with the same <SPAN CLASS="application" >search.cgi</SPAN >. There are a few ways to do it. They are given here in the order <SPAN CLASS="application" >search.cgi</SPAN > detects the template name. </P ><P ></P ><OL TYPE="1" ><LI ><P > <SPAN CLASS="application" >search.cgi</SPAN > checks the environment variable <CODE CLASS="envar" >UDMSEARCH_TEMPLATE</CODE >. So you can put a path to the desired search template to <CODE CLASS="envar" >UDMSEARCH_TEMPLATE</CODE >. </P ></LI ><LI ><P > <SPAN CLASS="application" >search.cgi</SPAN > also supports <SPAN CLASS="application" >Apache</SPAN > internal redirect. It checks the <CODE CLASS="envar" >REDIRECT_STATUS</CODE > and <CODE CLASS="envar" >REDIRECT_URL</CODE > environment variables. To start using <SPAN CLASS="application" >Apache</SPAN > internal redirect you can add these lines into <TT CLASS="filename" >httpd.conf</TT >: <PRE CLASS="programlisting" > AddType text/html .zhtml AddHandler zhtml .zhtml Action zhtml /cgi-bin/search.cgi </PRE > </P ><P >Put <SPAN CLASS="application" >search.cgi</SPAN > into your <TT CLASS="filename" >/cgi-bin/</TT > directory. Then put the <ACRONYM CLASS="acronym" >HTML</ACRONYM > search templates into your Web server directory using the <TT CLASS="filename" >.zthml</TT > extension, for example <TT CLASS="filename" >template.zhtml</TT >. Now you can open the search page by typing this <ACRONYM CLASS="acronym" >URL</ACRONYM > in the browser location bar: <PRE CLASS="programlisting" > http://www.site.com/path/to/template.zhtml </PRE > Instead of <TT CLASS="filename" >.zthml</TT > you can configure any other extension on your choice. </P ></LI ><LI ><P > <SPAN CLASS="application" >search.cgi</SPAN > also checks the <ACRONYM CLASS="acronym" >URL</ACRONYM > part after the "<TT CLASS="filename" >search.cgi</TT >" substring, which is available in the <CODE CLASS="envar" >PATH_INFO</CODE > environment variable. For example, if you type <TT CLASS="filename" >http://site/search.cgi/search1.html</TT > in your browser, <SPAN CLASS="application" >search.cgi</SPAN > will open <TT CLASS="filename" >search1.htm</TT > as a template file. If you type <TT CLASS="filename" >http://site/search.cgi/search2.html</TT >, it will use <TT CLASS="filename" >search2.htm</TT >, and so on. </P ></LI ><LI ><P >If the above three ways did not work, <SPAN CLASS="application" >search.cgi</SPAN > opens a template which has the same name with the script being executed by reading the <CODE CLASS="envar" >SCRIPT_NAME</CODE > environment variable value. <SPAN CLASS="application" >search.cgi</SPAN > opens the template file <TT CLASS="filename" >ETC/search.htm</TT >, <TT CLASS="filename" >search1.cgi</TT > opens the template file <TT CLASS="filename" >ETC/search1.htm</TT > and so on, where <TT CLASS="filename" >ETC</TT > is <SPAN CLASS="application" >mnoGoSearch</SPAN > <TT CLASS="filename" >/etc</TT > directory (usually <TT CLASS="filename" >/usr/local/mnogosearch/etc</TT >). So, you can create a number of symbolic or hard links to the same <SPAN CLASS="application" >search.cgi</SPAN > and open it using its different names. </P ><DIV CLASS="note" ><BLOCKQUOTE CLASS="note" ><P ><B >Note: </B >See also <A HREF="msearch-multilang.html" >the Section called <I >Search pages with multi-lingual interface <A NAME="AEN4113" ></A ></I > in Chapter 9</A >. </P ></BLOCKQUOTE ></DIV ></LI ></OL ></DIV ><DIV CLASS="sect2" ><H2 CLASS="sect2" ><A NAME="search-bool" >Advanced Boolean search <A NAME="AEN5012" ></A ></A ></H2 ><P >You can compose complex search queries with help of the <SPAN CLASS="emphasis" ><I CLASS="emphasis" >Boolean query language</I ></SPAN >. </P ><P ><SPAN CLASS="application" >mnoGoSearch</SPAN > understands the following Boolean operators: </P ><P ><KBD CLASS="userinput" >&</KBD > - logical <B CLASS="command" >AND</B >. For example, ``<KBD CLASS="userinput" >mysql & odbc</KBD >''. <SPAN CLASS="application" >mnoGoSearch</SPAN > will return the documents containing both words <TT CLASS="literal" >mysql</TT > and <TT CLASS="literal" >odbc</TT >. You can also use <KBD CLASS="userinput" >+</KBD > for this operator. </P ><P ><KBD CLASS="userinput" >|</KBD > - logical <B CLASS="command" >OR</B >. For example, ``<KBD CLASS="userinput" >mysql|odbc</KBD >''. <SPAN CLASS="application" >mnoGoSearch</SPAN > will find the documents containing the word <TT CLASS="literal" >mysql</TT >, or containing the word <TT CLASS="literal" >odbc</TT >. </P ><P ><KBD CLASS="userinput" >~</KBD > - logical <B CLASS="command" >NOT</B >. For example, ``<KBD CLASS="userinput" >mysql & ~odbc</KBD >''. <SPAN CLASS="application" >mnoGoSearch</SPAN > will find the documents containing the word <TT CLASS="literal" >mysql</TT > and not containing the word <TT CLASS="literal" >odbc</TT > at the same time. Note that the <TT CLASS="literal" >~</TT > operator can only <SPAN CLASS="emphasis" ><I CLASS="emphasis" >exclude</I ></SPAN > the given word from the results. The query ``<KBD CLASS="userinput" >~mysql & ~odbc</KBD >'' will return no result. </P ><P ><KBD CLASS="userinput" >()</KBD > - the grouping command to compose more complex queries. For example, ``<KBD CLASS="userinput" >(mysql | msql) & ~postgres</KBD >''. </P ><P > <DIV CLASS="note" ><BLOCKQUOTE CLASS="note" ><P ><B >Note: </B > Boolean operators work only in queries having two or more words. <SPAN CLASS="application" >search.cgi</SPAN > ignores Boolean operators in queries consisting of a single word. Thus, the query ``<KBD CLASS="userinput" >~odbc</KBD >'' will just search for the word <TT CLASS="literal" >odbc</TT > without treating the <TT CLASS="literal" >~</TT > sign as the <B CLASS="command" >NOT</B > operator. </P ></BLOCKQUOTE ></DIV > </P ></DIV ><DIV CLASS="sect2" ><H2 CLASS="sect2" ><A NAME="search-secnoref" >Restricting search words to a section <A NAME="AEN5056" ></A ></A ></H2 ><P > Starting from the version <TT CLASS="literal" >3.2.39</TT >, <SPAN CLASS="application" >mnoGoSearch</SPAN > understands <SPAN CLASS="emphasis" ><I CLASS="emphasis" >section name references</I ></SPAN >. For example, ``<KBD CLASS="userinput" >title:web body:server''</KBD > will find the documents having the word <TT CLASS="literal" >web</TT > in their titles and at the same time the word <TT CLASS="literal" >server</TT > in their bodies. To make <SPAN CLASS="application" >search.cgi</SPAN > recognize section names, you need to copy the desired <A HREF="msearch-cmdref-section.html" >Section</A > commands from <TT CLASS="filename" >indexer.conf</TT > to <TT CLASS="filename" >search.htm</TT >. <DIV CLASS="note" ><BLOCKQUOTE CLASS="note" ><P ><B >Note: </B > Section name references can be combined with Boolean operators. </P ></BLOCKQUOTE ></DIV > </P ></DIV ><DIV CLASS="sect2" ><H2 CLASS="sect2" ><A NAME="search-phrase" >Phrase search <A NAME="AEN5073" ></A ></A ></H2 ><P > Phrase search is activated by using quote characters around the words. For example, the query ``<KBD CLASS="userinput" >"search engine"</KBD >'' will return the documents having the word <TT CLASS="literal" >search</TT > immediately followed by the word <TT CLASS="literal" >engine</TT >, while the query ``<KBD CLASS="userinput" >search engine</KBD >'' (i.e. without the surrounding quotes) will not require the words to be close to each other. <DIV CLASS="note" ><BLOCKQUOTE CLASS="note" ><P ><B >Note: </B > It is possible to combine two or more phrases in the same query, as well as combine phrases with Boolean operators. </P ></BLOCKQUOTE ></DIV > </P ><P > Starting from the version <TT CLASS="literal" >3.2.39</TT >, automatic phrase search is forced for complex words having dots, dashes, underscores, commas and slashes (<TT CLASS="literal" >- _ . , /</TT >) as delimiters between the word parts. For example, the query ``<KBD CLASS="userinput" >max_allowed_packet</KBD >'' automatically searches for the phrase ``<KBD CLASS="userinput" >"max allowed packet"</KBD >'', not just for the three separate words. </P ></DIV ><DIV CLASS="sect2" ><H2 CLASS="sect2" ><A NAME="search-exactsectionmatch" >Exact section match <A NAME="AEN5089" ></A ></A ></H2 ><P > Starting from the version <TT CLASS="literal" >3.3.0</TT >, <SPAN CLASS="emphasis" ><I CLASS="emphasis" >exact section match</I ></SPAN > syntax is available. An exact section match query consists of a section reference (as described in <A HREF="msearch-doingsearch.html#search-secnoref" >the Section called <I >Restricting search words to a section <A NAME="AEN5056" ></A ></I ></A >), followed by the <TT CLASS="literal" >=</TT > (the EQUAL sign), followed by a phrase in quotes. For example, the search query ``<KBD CLASS="userinput" >title="search engine"</KBD >'' will return the documents having <TT CLASS="literal" >title</TT > equal to the phrase "<TT CLASS="literal" >search engine</TT >". </P ><P > Exact section match is not available if you set <A HREF="msearch-cmdref-savesectionsize.html" >SaveSectionSize</A > set to <TT CLASS="literal" >no</TT >. </P ></DIV ><DIV CLASS="sect2" ><H2 CLASS="sect2" ><A NAME="search-exp" >How search handles expired documents</A ></H2 ><P >Expired documents are still searchable with their old content. </P ></DIV ></DIV ></DIV ><DIV CLASS="NAVFOOTER" ><HR ALIGN="LEFT" WIDTH="100%"><TABLE SUMMARY="Footer navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" ><A HREF="msearch-vary.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="index.html" ACCESSKEY="H" >Home</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><A HREF="msearch-templates.html" ACCESSKEY="N" >Next</A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >Indexing multilingual servers</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" > </TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >How to write search result templates <A NAME="AEN5107" ></A ></TD ></TR ></TABLE ></DIV ><!--#include virtual="body-after.html"--></BODY ></HTML >