<?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>
|