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

  1.  
  2. <?php
  3.  
  4. mysql_connect(DB_HOSTNAME,DB_USER,DB_PASS);
  5.  
  6. mysql_select_db(DB_NAME);error_reporting(E_ALL|E_STRICT);
  7.  
  8. set_include_path(‘.’ . PATH_SEPARATOR . ‘./library/’);
  9.  
  10. include "Zend/Loader.php";
  11.  
  12. Zend_Loader::loadClass(‘Zend_Search_Lucene’);
  13.  
  14. Zend_Loader::loadClass(‘Zend_Search_Lucene_Document’);
  15.  
  16. Zend_Loader::loadClass(‘Zend_Search_Lucene_Analysis_Analyzer’);
  17.  
  18. /*
  19.  
  20. *  ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
  21.  
  22. */
  23.  
  24. Zend_Search_Lucene_Analysis_Analyzer::setDefault(
  25.  
  26.     new Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8());
  27.  
  28. /*
  29.  
  30. *↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
  31.  
  32. * 以上部份 資料是utf8 為編碼的這句為重點。如果你是utf8的話必需加入,否則資料會錯誤
  33.  
  34. */
  35.  
  36. if (function_exists("set_time_limit") &amp;&amp; ! get_cfg_var(’safe_mode’)) {
  37.  
  38.  
  39. }
  40.  
  41. $index = new Zend_Search_Lucene(‘index’, true);
  42.  
  43. $sql = "SELECT `id` , `title`,  `description`
  44.  
  45. FROM `Search_test` limit 0,10000"; //拿取需要索引的資料
  46.  
  47. mysql_query("set names ‘utf8′");
  48.  
  49. $result = mysql_query($sql);
  50.  
  51. while($row = mysql_fetch_assoc($result)) {
  52.  
  53.   $url = ‘http://www.vincent.idv.hk/?id=’ . $row[‘id’]; //網頁位置
  54.  
  55.   $title = $row[‘title’];//主題
  56.  
  57.   $description = $row["description"]; //描述
  58.  
  59.  //儲存網頁的位置以在搜尋結果中連結.
  60.  
  61.   $doc = new Zend_Search_Lucene_Document();//建立新的索引文件
  62.  
  63.   $doc->addField(Zend_Search_Lucene_Field::UnIndexed(‘url’, $url));
  64.  
  65.   $doc->addField(Zend_Search_Lucene_Field::Text(‘title’, $title,‘utf-8′));
  66.  
  67.   $doc->addField(Zend_Search_Lucene_Field::Text(‘contents’, $description,
  68.  
  69. ‘utf-8′));
  70.  
  71.   $index->addDocument($doc); //把索引文件加到索引中
  72.  
  73. }
  74.  
  75. $index->commit();//提交,及保存索引

Search.php

  1.  
  2. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  3. <?php
  4. mysql_connect(DB_HOSTNAME,DB_USER,DB_PASS);
  5. mysql_select_db(DB_NAME);
  6. error_reporting(E_ALL|E_STRICT);
  7.  
  8. set_include_path(‘.’ . PATH_SEPARATOR . ‘./library/’);
  9. include "Zend/Loader.php";
  10. Zend_Loader::loadClass(‘Zend_Search_Lucene’);
  11. Zend_Loader::loadClass(‘Zend_Search_Lucene_Exception’);
  12. Zend_Loader::loadClass(‘Zend_Search_Lucene_Document’);
  13. Zend_Loader::loadClass(‘Zend_Search_Lucene_Analysis_Analyzer’);
  14. Zend_Loader::loadClass(‘Zend_Search_Lucene_Search_QueryParser’);
  15. Zend_Search_Lucene_Analysis_Analyzer::setDefault(
  16.     new Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8());
  17. $index = new Zend_Search_Lucene(‘index’);
  18.   $query = isset($_GET[‘query’]) ? $_GET[‘query’] : ;
  19.     $query = trim($query);
  20.                echo $query;
  21.                if(strlen($query)>0){
  22.                               try {
  23.                                              $query2 = Zend_Search_Lucene_Search_QueryParser::parse($query, "utf-8");
  24.  
  25.                        $hits = $index->find($query2);
  26.                    }
  27.                    catch (Zend_Search_Lucene_Exception $ex) {
  28.                        $hits = array();
  29.                    }
  30.     $numHits = count($hits);
  31.                }
  32.  
  33. ?>
  34. <form method="get" action="search.php">
  35.     <input type="text" name="query" value="<?= htmlSpecialChars($query) ?>" />
  36.     <input type="submit" value="Search" />
  37. </form>
  38.  
  39. <?php if (strlen($query) > 0) { ?>
  40.     <p>
  41.         Found <?= $hits ?> result(s) for query <?= $query ?>.
  42.     </p>
  43.  
  44.     <?php foreach ($hits as $hit) { ?>
  45.         <h3><?= $hit->title ?> </h3>
  46.         <p>
  47.             <?= $hit->contents ?><br />
  48.             <a href="<?= $hit->url ?>">Read more…</a>
  49.         </p>
  50.     <?php } ?>
  51. <?php } ?>

Written by 傻仔仔

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

  

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

  

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




發表一條評論