Oct
13

今日試左zend既framework 見到佢入面有Lucene 咁就整左個fulltext search既page。咁就放上黎同大家分享下。
先到zend framework下載 所需的library
先講一講folder的結構
├─index.php
├─search.php
├─library
│ └─Zend
index.php
-
-
<?php
-
-
-
-
-
include "Zend/Loader.php";
-
-
Zend_Loader::loadClass(‘Zend_Search_Lucene’);
-
-
Zend_Loader::loadClass(‘Zend_Search_Lucene_Document’);
-
-
Zend_Loader::loadClass(‘Zend_Search_Lucene_Analysis_Analyzer’);
-
-
/*
-
-
* ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
-
-
*/
-
-
Zend_Search_Lucene_Analysis_Analyzer::setDefault(
-
-
new Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8());
-
-
/*
-
-
*↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
-
-
* 以上部份 資料是utf8 為編碼的這句為重點。如果你是utf8的話必需加入,否則資料會錯誤
-
-
*/
-
-
-
-
}
-
-
$index = new Zend_Search_Lucene(‘index’, true);
-
-
$sql = "SELECT `id` , `title`, `description`
-
-
FROM `Search_test` limit 0,10000"; //拿取需要索引的資料
-
-
-
-
-
$url = ‘http://www.vincent.idv.hk/?id=’ . $row[‘id’]; //網頁位置
-
-
$title = $row[‘title’];//主題
-
-
$description = $row["description"]; //描述
-
-
//儲存網頁的位置以在搜尋結果中連結.
-
-
$doc = new Zend_Search_Lucene_Document();//建立新的索引文件
-
-
$doc->addField(Zend_Search_Lucene_Field::UnIndexed(‘url’, $url));
-
-
$doc->addField(Zend_Search_Lucene_Field::Text(‘title’, $title,‘utf-8′));
-
-
$doc->addField(Zend_Search_Lucene_Field::Text(‘contents’, $description,
-
-
‘utf-8′));
-
-
$index->addDocument($doc); //把索引文件加到索引中
-
-
}
-
-
$index->commit();//提交,及保存索引
Search.php
-
-
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
<?php
-
-
include "Zend/Loader.php";
-
Zend_Loader::loadClass(‘Zend_Search_Lucene’);
-
Zend_Loader::loadClass(‘Zend_Search_Lucene_Exception’);
-
Zend_Loader::loadClass(‘Zend_Search_Lucene_Document’);
-
Zend_Loader::loadClass(‘Zend_Search_Lucene_Analysis_Analyzer’);
-
Zend_Loader::loadClass(‘Zend_Search_Lucene_Search_QueryParser’);
-
Zend_Search_Lucene_Analysis_Analyzer::setDefault(
-
new Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8());
-
$index = new Zend_Search_Lucene(‘index’);
-
echo $query;
-
try {
-
$query2 = Zend_Search_Lucene_Search_QueryParser::parse($query, "utf-8");
-
-
$hits = $index->find($query2);
-
}
-
catch (Zend_Search_Lucene_Exception $ex) {
-
}
-
}
-
-
?>
-
<form method="get" action="search.php">
-
<input type="text" name="query" value="<?= htmlSpecialChars($query) ?>" />
-
<input type="submit" value="Search" />
-
</form>
-
-
<p>
-
Found <?= $hits ?> result(s) for query <?= $query ?>.
-
</p>
-
-
<?php foreach ($hits as $hit) { ?>
-
<h3><?= $hit->title ?> </h3>
-
<p>
-
<?= $hit->contents ?><br />
-
<a href="<?= $hit->url ?>">Read more…</a>
-
</p>
-
<?php } ?>
-
<?php } ?>
Written by 傻仔仔
