Login   Register  
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: 13 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>