Oct
16
PHP 中文全文搜尋 FullText Search 連中文分詞 (只需PHP就能使用Lucene)
前兩日發表過一份關於 ZEND FRAMEWORK 既SEARCH ENGINE 既文章
E篇係加強版.
這一次最大的分别是支援了中文分詞。上一個版本只支援英文。而這個版本支援了中文全文搜尋及中文分詞功能已把PROGRAM 簡化 改得容易明白。
按此下載原始檔 (SOURCE CODE)
先說明資料夾內容
│ config.php 資料庫連接設定
│ index_file.php 製作索引的檔案
│ search.php 主程式,搜尋程式。
└─Zend <–主頁的CLASS LIBRARY
Config.php
-
-
-
//DB_HOSTNAME : 資料庫位置E.G localhost
-
-
// DB_USERNAME : 資料庫用戶名稱
-
-
// DB_PASSWORD : 資料庫用戶密碼
-
-
// DB_NAME : 使用的資料庫名稱
-
-
?>
index_file.php
-
<?phpinclude_once("config.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_Common_Phpbean’);
-
-
Zend_Search_Lucene_Analysis_Analyzer::setDefault(new Zend_Search_Lucene_Analysis_Analyzer_Common_Phpbean());
-
-
-
-
}
-
-
$index = new Zend_Search_Lucene(‘index’, true);
-
-
$sql = "
-
-
SELECT `id` , `title` , `description`
-
-
FROM `data_table` "; //拿取需要索引的資料
-
-
-
-
-
$url = ‘http://www.vincent.idv.hk/’ . $row[‘d’]; //網頁位置
-
-
$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_once("config.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_Common_Phpbean’);
-
-
Zend_Loader::loadClass(‘Zend_Search_Lucene_Search_QueryParser’);
-
-
Zend_Search_Lucene_Analysis_Analyzer::setDefault(
-
-
new Zend_Search_Lucene_Analysis_Analyzer_Common_Phpbean());$index = new Zend_Search_Lucene(‘index’);
-
-
-
-
-
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 <?= $numHits ?> result(s) for query <?= $query ?>.
-
-
</p>
-
-
<?php foreach ($hits as $hit) { ?>
-
-
<h3><?= $hit->title ?> <?= $hit->score ?></h3>
-
-
<p>
-
-
<?= $hit->contents ?><br />
-
-
<a href="<?= $hit->url ?>">Read more…</a>
-
-
</p>
-
-
<?php } ?>
-
-
<?php } ?>
按此下載原始檔(U-file.net)
按此下載原始檔(badongo.com)
解壓縮密碼為 : http://www.vincent.idv.hk
Written by 傻仔仔

(2 votes, average: 4 out of 5)