Symbian手機用戶的喜訊。即將推出Symbian版Firefox瀏覽器 FlyakiteOSX WINDOWS模擬OSX
Oct 13

今日試左zend既framework 見到佢入面有Lucene 咁就整左個fulltext search既page。咁就放上黎同大家分享下。

先到zend framework下載 所需的library

先講一講folder的結構
├─index.php
├─search.php
├─library
│ └─Zend

index.php

<?php

mysql_connect(DB_HOSTNAME,DB_USER,DB_PASS);

mysql_select_db(DB_NAME);error_reporting(E_ALL|E_STRICT);

set_include_path('.' . PATH_SEPARATOR . './library/');

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的話必需加入,否則資料會錯誤

*/

if (function_exists("set_time_limit") && ! get_cfg_var('safe_mode')) {

  set_time_limit(0);

}

$index = new Zend_Search_Lucene('index', true);

$sql = "SELECT `id` , `title`,  `description`

FROM `Search_test` limit 0,10000"; //拿取需要索引的資料

mysql_query("set names 'utf8'");

$result = mysql_query($sql);

while($row = mysql_fetch_assoc($result)) {

  $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
mysql_connect(DB_HOSTNAME,DB_USER,DB_PASS);
mysql_select_db(DB_NAME);
error_reporting(E_ALL|E_STRICT);

set_include_path('.' . PATH_SEPARATOR . './library/');
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');
  $query = isset($_GET['query']) ? $_GET['query'] : '';
    $query = trim($query);
	echo $query;
	if(strlen($query)>0){
		try {
			$query2 = Zend_Search_Lucene_Search_QueryParser::parse($query, "utf-8");

	        $hits = $index->find($query2);
	    }
	    catch (Zend_Search_Lucene_Exception $ex) {
	        $hits = array();
	    }
    $numHits = count($hits);
	}

?>
<form method="get" action="search.php">
    <input type="text" name="query" value="<?= htmlSpecialChars($query) ?>" />
    <input type="submit" value="Search" />
</form>

<?php if (strlen($query) > 0) { ?>
    <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 傻仔仔

光波24書網(http://www.24reader.com/) - 免費電子書

  

光波24書網(http://www.24reader.com/) - 新到電子書

  

光波24書網(http://www.24reader.com/) - 快將推出電子書




發表一條評論