Zend_Search_Lucene创建PHP站内搜索
2010-02-01 10:51
253 查看
Zend_Search_Lucene 是一个完全由 PHP 5 编写的通用文本搜索引擎。由于其将索引保存在文件系统中而不需要数据库支持,因此它几乎可以为任何由 PHP 驱动的网站增加搜索能力。Zend_Search_Lucene 支持下列特性:
具有排名功能的搜索——最符合要求的结果出现在最前面
许多强大的查询类型:短语查询、通配符查询、近似查询、范围查询等 [6]
搜索特定的字段,如标题、作者、内容,等等
Zend_Search_Lucene 来源于 Apache Lucene project。要了解关于 Lucene 的更多详情,请访问 http://lucene.apache.org/java/docs/
。
首先创建建立索引文件,如下示例:
index.php
2、运行index.php后,成功创建索引文件,可在当前目录下看到“index1”文件夹
3、关键字搜索
4、简易的zend lucene搜索就这样完成了,更多功能请参考zend手册,但是目前来讲zend版的lucene建立索引和搜索都是速度太慢,无法满足系统需求,转而使用sphinx,这个将在下文介绍。
具有排名功能的搜索——最符合要求的结果出现在最前面
许多强大的查询类型:短语查询、通配符查询、近似查询、范围查询等 [6]
搜索特定的字段,如标题、作者、内容,等等
Zend_Search_Lucene 来源于 Apache Lucene project。要了解关于 Lucene 的更多详情,请访问 http://lucene.apache.org/java/docs/
。
首先创建建立索引文件,如下示例:
index.php
<?php require_once 'Zend/Search/lucene.php'; require_once 'CN_Lucene_Analyzer.php'; Zend_Search_Lucene_Analysis_Analyzer::setDefault(new CN_Lucene_Analyzer()); $index = new Zend_Search_Lucene('index1', true); $doc = new Zend_Search_Lucene_Document(); $doc->addField(Zend_Search_Lucene_Field::Text('url', 'http://www.eyuwo.com', 'UTF-8')); $Text='this is just a test of Zend_Search_lucene. 说些什么呢,别没事找事啊,真不够哥们,繁體能不能被搜索到呢,测试一下啊.'; $Text.='非常簡單的實作;然而就全文檢索來說還是有缺點的!首先,建立分詞索引時必定會耗費系統資源,故比較好的做法是批次定時處理建立索引的動作。第二點是中文的問題,因為中文字詞與連貫的句子的關係,在分詞時是以二個字為一個詞的最基本單位,所以單一個中文字是不會有任何搜尋結果的。最後因為建立分詞索引為觸發事件,如果沒有去觸發它就無法更新分詞至目前資料庫的最新狀態。我覺得分詞索引的方式很像是MySQL的View資料表,也是將資料表中的欄位作一個資料上的更新,只是它沒有欄位的限制,可以針對建立的「詞」索引進行搜尋。就某方面來說是很好用的功能,也不失為中文在全文索引時的一種解決方案。^^'; //$docText=iconv('ISO-8859-1','ASCII//TRANSLIT',$Text); $doc->addField(Zend_Search_Lucene_Field::Text('contents', $Text ,'UTF-8')); $index->addDocument($doc); $index->commit(); echo 'indexer one file!'; ?>
2、运行index.php后,成功创建索引文件,可在当前目录下看到“index1”文件夹
<?php require_once 'Zend/Search/lucene.php'; require_once 'CN_Lucene_Analyzer.php'; Zend_Search_Lucene_Analysis_Analyzer::setDefault(new CN_Lucene_Analyzer()); $index = new Zend_Search_Lucene('index1', true); $doc = new Zend_Search_Lucene_Document(); $doc->addField(Zend_Search_Lucene_Field::Text('url', 'http://www.eyuwo.com', 'UTF-8')); $Text='this is just a test of Zend_Search_lucene. 说些什么呢,别没事找事啊,真不够哥们,繁體能不能被搜索到呢,测试一下啊.'; $Text.='非常簡單的實作;然而就全文檢索來說還是有缺點的!首先,建立分詞索引時必定會耗費系統資源,故比較好的做法是批次定時處理建立索引的動作。第二點是中文的問題,因為中文字詞與連貫的句子的關係,在分詞時是以二個字為一個詞的最基本單位,所以單一個中文字是不會有任何搜尋結果的。最後因為建立分詞索引為觸發事件,如果沒有去觸發它就無法更新分詞至目前資料庫的最新狀態。我覺得分詞索引的方式很像是MySQL的View資料表,也是將資料表中的欄位作一個資料上的更新,只是它沒有欄位的限制,可以針對建立的「詞」索引進行搜尋。就某方面來說是很好用的功能,也不失為中文在全文索引時的一種解決方案。^^'; //$docText=iconv('ISO-8859-1','ASCII//TRANSLIT',$Text); $doc->addField(Zend_Search_Lucene_Field::Text('contents', $Text ,'UTF-8')); $index->addDocument($doc); $index->commit(); echo 'indexer one file!'; ?>
3、关键字搜索
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <?php require_once('Zend/Search/Lucene.php'); require_once('CN_Lucene_Analyzer.php'); $index = new Zend_Search_Lucene('index1'); Zend_Search_Lucene_Analysis_Analyzer::setDefault(new CN_Lucene_Analyzer()); $query = Zend_Search_Lucene_Search_QueryParser::parse($keyword, "UTF-8"); $hits = $index->find($query); foreach ($hits as $hit) { echo 'ID: '.$hit->id.'<br>'; echo 'Score: '.$hit->score.'<br>'; echo 'Url: '.$hit->url.'<br><hr>'; echo 'Contents: '.$hit->contents.'<br>'; } ?> <hr> <form action="" name="frm" method="get" onSubmit="return checkform(this)"> <input type="text" name="keyword" size="20" maxlength="50" value="<?=$keyword?>"> <input type="submit" name="search" value="搜索"> </form>
4、简易的zend lucene搜索就这样完成了,更多功能请参考zend手册,但是目前来讲zend版的lucene建立索引和搜索都是速度太慢,无法满足系统需求,转而使用sphinx,这个将在下文介绍。
相关文章推荐
- [转]结合php5与zend_search_lucene来创建一个全文搜索引擎
- PHP中通过 JavaBridge+Lucene实现全文搜索站内搜索
- EKL PHP 调取_search接口查询 订单创建统计
- Zend_Search_Lucene索引更新
- Zend Search Lucene实现全文搜索
- 使用Zend_Search_Lucene实现频道搜索
- lucene一般创建index和indexsearch例子
- 使用Zend_Search_Lucene实现频道搜索
- zend 创建项目 "php project from existing directory" 报错”Invalid project description.“ 详细信息"overlaps the workspace location"
- Zend Search Lucene实现全文搜索
- 使用Zend_Search_Lucene实现频道搜索
- php中MVC zend framework框架在apache上的配置方法以及创建步骤,配置虚拟主机
- Zend_Search_Lucene索引更新
- Zend Framework 1.10.1 开始使用 Zend_Search_Lucene
- 创建Zend Framework项目(Apache+Mysql+Php+ZendFramework-1.12.5-minimal)
- Zend_Search_Lucene_Analysis_Analyzer_Common_Text_CaseInsensitive? no 命名空间
- Zend Framework 1.10.1 开始使用 Zend_Search_Lucene
- elasticsearch基础知识以及创建索引
- PHP简单创建压缩图的方法
- weiphp 3.0创建插件提示错误解决办法 提示您没有创建目录写入权限,