| 
<?php/*
 * htdig_search.php
 *
 * Purpose:  Search the database of indexed pages and present the results.
 *
 * @(#) $Header: /home/mlemos/cvsroot/htdiginterface/htdig_search.php,v 1.5 2005/02/08 06:10:48 mlemos Exp $
 *
 */
 
 require("htdig.php");
 require("configuration.php");
 
 $htdig=new htdig_class;
 
 /*
 * Where are the executables of htsearch, htdig, htmerge, htfuzzy
 * located? They should be in the same directory. It does not need
 * to be in the original instalation directory.
 */
 $htdig->htdig_path=$htdig_path;
 
 /*
 * If the htsearch program is locate a different directory from htdig,
 * specify it here.
 */
 $htdig->htsearch_path=$htsearch_path;
 
 /*
 * Where this search engine configuration file should be stored? It
 * does not need to be in the original htdig instalation directory.
 * If you need to index more than one site in your server run this
 * script as many times as need specifying different configuration file
 * names.
 */
 $htdig->configuration=$htdig_configuration_file;
 
 /*
 * Where this search engine database files hould be stored? It
 * does not need to be in the original htdig instalation directory.
 * If you need to index more than one site in your server run this
 * script as many times as need specifying different database
 * directories.
 */
 $htdig->database_directory=$htdig_database_directory;
 
 /*
 * Set the secure search option to let the latest Ht:/Dig versions
 * (3.1.6 or later) use configuration files stored in paths different
 * from the default.
 */
 $htdig->secure_search=1;
 
 
 if(IsSet($_REQUEST["words"]))
 $words=$_REQUEST["words"];
 if(IsSet($_REQUEST["method"]))
 $method=$_REQUEST["method"];
 if(IsSet($_REQUEST["go_search"]))
 $go_search=$_REQUEST["go_search"];
 if(IsSet($_REQUEST["page"]))
 $page=$_REQUEST["page"];
 ?><HTML>
 <HEAD>
 <TITLE>Search this site</TITLE>
 <BODY>
 <H1><CENTER>Search this site</CENTER></H1>
 <HR>
 <FORM METHOD="GET" ACTION="" NAME="search_form">
 <CENTER><TABLE BORDER>
 <TR>
 <TD>
 <CENTER><TABLE>
 <TR>
 <TH ALIGN=right>Search for:</TH>
 <TD><INPUT TYPE="text" NAME="words" VALUE="<?
 if(IsSet($words))
 echo HtmlEntities($words);
 ?>"></TD>
 <TD><CENTER><INPUT TYPE="submit" VALUE="Go"</CENTER></TD>
 </TR>
 <TR>
 <TH ALIGN=right>Match</LABEL>:</TH>
 <TD><SELECT NAME="method">
 <OPTION VALUE="or"<?
 if(IsSet($method)
 && $method=="or")
 echo " SELECTED";
 ?>>Any word</OPTION>
 <OPTION VALUE="and"<?
 if(IsSet($method)
 && $method=="and")
 echo " SELECTED";
 ?>>All words</OPTION>
 </SELECT>
 </TD></TR>
 </TABLE></CENTER>
 </TD></TR>
 </TABLE></CENTER>
 <INPUT TYPE="hidden" NAME="go_search" VALUE="1" ID="go_search">
 </FORM>
 <?
 if(IsSet($go_search))
 {
 if(IsSet($page)
 && intval($page)>0)
 $page=intval($page);
 else
 $page=1;
 
 /* How many matches per page? */
 $matchesperpage=10;
 
 /* What is the limit of Next and Previous result page links ? */
 $listpages=4;
 
 $options=array(
 "matchesperpage"=>$matchesperpage,
 "page"=>$page,
 "method"=>$method
 );
 $words=ereg_replace("[ ]+","|",$words);
 if(!strcmp($error=$htdig->Search($words,$options,$results),""))
 {
 $maximum_page=intval(($results["MatchCount"]+$matchesperpage-1)/$matchesperpage);
 if($results["MatchCount"])
 {
 if($page>$maximum_page)
 {
 $options["page"]=$page=$maximum_page;
 $error=$htdig->Search($words,$options,$results);
 }
 }
 if(!strcmp($error,""))
 {
 if($results["MatchCount"]>0)
 {
 ?>
 <TABLE WIDTH="90%">
 <TR>
 <TD ALIGN=right WIDTH="5%"> </TD>
 <TD><B>Pages found:</B> <?
 echo $results["MatchCount"];
 ?></TD>
 </TR>
 </TABLE>
 <?
 if($results["MatchCount"]>$matchesperpage)
 {
 ?>
 <TABLE WIDTH="90%">
 <TR>
 <TD WIDTH="5%"> </TD>
 <TD><TABLE>
 <TR>
 <?
 $link_values="words=".UrlEncode($words)."&method=$method&go_search=1";
 if($page>1)
 {
 if(($link_page=$page-$listpages)<1)
 $link_page=1;
 for(;$link_page<$page;$link_page++)
 {
 $page_range=(($link_page-1)*$matchesperpage+1)."-".min($link_page*$matchesperpage,$results["MatchCount"]);
 $url="?page=$link_page&$link_values";
 echo "<TD><A HREF=\"$url\">$page_range</A></TD>\n";
 }
 echo "<TD><A HREF=\"$url\"><< Previous</A></TD>\n";
 }
 $page_range=(($page-1)*$matchesperpage+1)."-".min($page*$matchesperpage,$results["MatchCount"]);
 echo "<TD><B>$page_range</B></TD>\n";
 if($page<$maximum_page)
 {
 $link_page=$page+1;
 $url="?page=$link_page&$link_values";
 echo "<TD><A HREF=\"$url\">Next >></TD>\n";
 if(($last_page=$page+$listpages)>$maximum_page)
 $last_page=$maximum_page;
 for(;$link_page<=$last_page;$link_page++)
 {
 $page_range=(($link_page-1)*$matchesperpage+1)."-".min($link_page*$matchesperpage,$results["MatchCount"]);
 $url="?page=$link_page&$link_values";
 echo "<TD><A HREF=\"$url\">$page_range</A></TD>\n";
 }
 }
 ?>
 </TR>
 </TABLE>
 </TD>
 </TR>
 </TABLE>
 <?
 }
 
 $first=$results["FirstMatch"];
 $last=$results["LastMatch"];
 for($match=$first;$match<=$last;$match++)
 {
 ?>
 <BR>
 <TABLE WIDTH="90%">
 <TR>
 <TD ALIGN=right WIDTH="5%">
 <?                    echo $match;
 ?>.</TD>
 <TD><?
 echo "<A HREF=\"",$results["Matches"][$match]["URL"],"\">".$results["Matches"][$match]["Title"]," (",$results["Matches"][$match]["Percent"],"%)";
 ?></TD>
 </TR>
 <TR>
 <TD> </TD>
 <TD><FONT SIZE=-1><?
 echo $results["Matches"][$match]["Excerpt"]
 ?></FONT></TD>
 </TR></TABLE>
 <?
 }
 }
 else
 {
 ?>
 <H2><CENTER>Sorry no pages were found.</CENTER></H2>
 <?
 }
 }
 }
 if(strcmp($error,""))
 {
 ?>
 <H2>Error: <?
 echo HtmlEntities($error);
 ?>.</H2>
 <?
 }
 }
 ?>
 <HR>
 </BODY>
 </HTML>
 
 |