PHP Classes
elePHPant
Icontem

File: demo.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Steven Haryanto  >  PHP Full Text Search Index  >  demo.php  >  Download  
File: demo.php
Role: Example script
Content type: text/plain
Description: A demo script
Class: PHP Full Text Search Index
A PHP library to do full text indexing with MySQL
Author: By
Last change:
Date: 14 years ago
Size: 5,867 bytes
 

Contents

Class file image Download
<?

require "demo.inc";
require
"KwIndex.lib";

$limit_contentlength = 10*1024;
#$limit_numdocs = 10000;

class MyKwIndex extends KwIndex {
    function &
document_sub($doc_ids) {
       
$docs = array();

       
# let's select the documents in a single query
       
$res = mysql_query("select id, title, content from document ".
                             
"where id in (".join(',', $doc_ids).")");
        while(
$row = mysql_fetch_row($res)) {
           
$docs[ $row[0] ] = $row[1]." ".$row[2];
        }
        return
$docs;
    }
}

$kw = new MyKwIndex(array(
   
"index_name" => "kwindex",
   
"hostname" => "localhost",

   
// from "demo.inc"
   
"db_name" => "kwindex_test",
   
"username" => $username,
   
"password" => $password
));

?>

<title>KwIndex demo</title>
<h1>KwIndex demo</h1>





<? if(!$action) { ?>

<h2>What do you want to do?</h2>
<ul>
<li><a href=demo.php?action=add>Add and index a document</li>
<li><a href=demo.php?action=browse>Browse documents</li>
<li><a href=demo.php?action=search>Search</a>
<li><a href=demo.phps>See the source code of this script</a>
</ul>

<h2>Document and index statistics</h2>
<ul>
<li>Total number of documents: <? $res = mysql_query("select count(*) from document"); $row = mysql_fetch_row($res); echo $row[0]; ?>
<li>Total size of documents: <? $res = mysql_query("select sum(contentlength) from document"); $row = mysql_fetch_row($res); echo $row[0]; ?> bytes
</ul>








<? } elseif($action == 'add') { ?>

<h2>Add and index a document</h2>

<? if (!$title && !$content) { ?>
<form method=POST>
<input type=hidden name=action value=add>
Title<br><input name=title size=70><br>
Content<br><textarea name=content cols=70 rows=20></textarea><br>
<input type=submit>
</form>

<? } else { ?>

<?

mysql_query
("insert into document (title,content,contentlength) values ('".addslashes($title)."','".addslashes($content)."',".strlen($content).")")
    or die(
"can't insert: ".mysql_error());
$id = mysql_insert_id();
$kw->add_document(array($id))
    or die(
"can't index: ".$kw->ERROR);
?>

Document indexed. Document id = <? echo $id ?>. Content length = <? echo strlen($content) ?>.

<? } ?>









<? } elseif($action == 'browse' || $action == 'search') { ?>

<? if ($action == 'search') { ?>
<h2>Search</h2>
<? } else { ?>
<h2>Browse documents</h2>
<? } ?>

<form method=GET>
<input type=hidden name=action value=search>
Search: <input name=words value="<? echo htmlentities($words) ?>">
Boolean: <select name=boolean><option<? echo $boolean == 'AND' ? " selected":"" ?>>AND<option<? echo $boolean == 'OR' ? " selected":""?>>OR</select>
Show: <select name=num>
    <option<? echo $num == 10 ? " selected":""?>>10
    <option<? echo $num == 20 ? " selected":""?>>20
    <option<? echo $num == 50 ? " selected":""?>>50
    <option<? echo $num == 100 ? " selected":""?>>100
</select>
<input type=submit value=Search>
</form>

<? if($action == 'browse' || $action == "search" && $words) { ?>
<?

if(!isset($start) || preg_match("/\D/", $start) || $start < 0) $start=1;
if(!isset(
$num) || preg_match("/\D/", $num) || $num > 100 || $num < 0) $num=20;
if(!isset(
$boolean) || $boolean != 'OR') $boolean='AND';
if(!
preg_match("/\S/", $words)) {
   
$docs = array();
    if(!(
$res = mysql_query("select id,mtime,title,content from document limit ".($start-1).",".($num+1))))
        die(
"can't select: ".mysql_error());
    while(
$row = mysql_fetch_row($res))
       
array_push($docs, $row);
} else {
   
$doc_ids = $kw->search(array('words'=>$words,'num'=>$num+1,'start'=>$start,'boolean'=>$boolean));
    if (!isset(
$doc_ids))
        die(
"can't search: ".$kw->ERROR);
   
$docs = array();
    if (
sizeof($doc_ids)) {
        if(!(
$res = mysql_query("select id,mtime,title,content from document where id in (".join(',',$doc_ids).")")))
        die(
"can't select: ".mysql_error());
        while(
$row = mysql_fetch_row($res))
           
array_push($docs, $row);
    }
}

?>
<table border>
<? if($start>1) { ?>
<tr><td colspan=5 align=right><a href=demo.php?action=browse&words=<? echo urlencode($words) ?>&start=<? echo urlencode($start-$num) ?>&num=<? echo urlencode($num) ?>&boolean=<? echo $boolean ?>>Previous</a></td></tr>
<? } ?>
<tr><td>id</td><td>title</td><td>content length</td><td>date</td><td>options</td></tr>
<? for($i=0; $i<min($num,sizeof(&$docs)); ++$i) { ?>
<tr><td><? echo $docs[$i][0] ?></td><td><a href=demo.php?action=view&id=<? echo $docs[$i][0] ?>><? echo htmlentities($docs[$i][2]) ?></td><td><? echo strlen($docs[$i][3]) ?></td><td><? echo $docs[$i][1] ?></a></td><td><a href=demo.php?action=delete&id=<? echo $docs[$i][0] ?>>delete</a></tr>
<? } ?>
<?
if(sizeof($docs) > $num) { ?>
<tr><td colspan=5 align=right><a href=demo.php?action=browse&words=<? echo urlencode($words) ?>&start=<? echo urlencode($start+$num) ?>&num=<? echo urlencode($num) ?>&boolean=<? echo $boolean ?>>Next</a></td></tr>
<? } ?>








<? } ?>
<?
} elseif($action == 'view') { ?>

<h2>View document</h2>

<? if($id) { ?>
<?

$res
= mysql_query("select title,content from document where id='".addslashes($id)."'");
$row = mysql_fetch_row($res);

     if (
$row) {
         echo
"<h3>Title</h3>\n\n",htmlentities($row[0]),"\n\n<h3>Content</h3>\n\n",htmlentities($row[1]),"\n\n";
     }
?>
<?
} ?>









<? } elseif($action == 'delete') { ?>

<h2>Delete document</h2>

<?

if(mysql_query("delete from document where id='".addslashes($id)."'")) {
    echo
"Article id=".htmlentities($id)." has been deleted.";
} else {
    echo
"Can't delete: ".mysql_error();
}

if(!
$kw->remove_document($id)) {
    echo
"Index for article id=".htmlentities($id)." has been removed.";
} else {
    echo
"Can't remove article index: ".$kw->ERROR;
}

?>








<? } ?>
<hr>
<a href=http://steven.haryan.to/php/KwIndex.html>KwIndex page</a>