文本搜索引擎(ZendSearchLucene).ppt
《文本搜索引擎(ZendSearchLucene).ppt》由会员分享,可在线阅读,更多相关《文本搜索引擎(ZendSearchLucene).ppt(27页珍藏版)》请在三一办公上搜索。
1、第23章 文本搜索引擎(Zend_Search_Lucene),通常的网站系统中,全站搜索是一个非常实用又十分便捷的功能。用户可以使用此功能在最短的时间内找出自己所需要的信息。通常的全站搜索功能都是需要数据库后台支持的,因为这样可以使用SQL语句强大的查询功能,而同样的文本搜索引擎则相对较少。本章所要介绍的Zend_Search_Lucene就是Zend Framework所提供的基于文本的通用搜索引擎。通过本章内容的学习,读者可以领会到使用Search_Lucene文本搜索引擎所带来的惊喜。,23.1 Zend_Search_Lucene简介,本节先来介绍关于Zend_Search_Luce
2、ne的一些基础内容,其中包括Zend_Search_Lucene的特点、Zend_Search_Lucene的组成部分以及字段类型的含义等。,23.1.1 Zend_Search_Lucene的特点,Zend_Search_Lucene是一个完全由PHP5编写的通用文本搜索引擎。由于其将索引保存在文件系统中而不需要数据库支持,因此该组件几乎可以为任何由PHP驱动的网站提供搜索能力。Zend_Search_Lucene组件具有以下特点。具有排名功能的搜索,搜索结果中最符合要求的内容将出现在结果集的最前面。支持许多强大的查询类型,如短语查询、通配符查询、近似查询、范围查询等。支持对特定字段的搜索,
3、如标题、作者、内容、发表时间等。,23.1.2 Zend_Search_Lucene的组成,Zend_Search_Lucene将文档作为基本的索引主题,而文档(document)又可以分为若干被命名的字段(field),字段中包含可供搜索的内容。一个文档被表现为Zend_Search_Lucene_Document对象,这个对象包含了若干Zend_Search_Lucene_Field对象,用以表现相应的字段。需要特别说明的是索引中可以加入任意类型的信息。应用程序描述信息或者元信息(metadata)可以被保存在文档字段中,并在搜索过程中与文档一起被检索。控制这些索引是应用程序的责任。这意味
4、着任意应用程序可以访问的数据来源都可以进行索引。例如,这些数据可以来自于文件系统、数据库或者是HTML表单等。,23.1.3 字段的含义,Zend_Search_Lucene_Field字段类中的字段中每种的创建方法与特点都不同。而类也提供了一些静态方法用以创建具有不同特点的字段。Zend_Search_Lucene_Field:Keyword($name,$value,$encoding=)Zend_Search_Lucene_Field:UnIndexed($name,$value,$encoding=)Zend_Search_Lucene_Field:Binary($name,$valu
5、e)Zend_Search_Lucene_Field:Text($name,$value,$encoding=)Zend_Search_Lucene_Field:UnStored($name,$value,$encoding=),23.2 创建索引,索引(Index)是Zend_Search_Lucene的重要组成部分。本节介绍如何创建并使用索引。其中将详细介绍创建一个新的索引与更新已经存在的索引的方法。,23.2.1 创建新的索引,要创建Zend_Search_Lucene索引,可以使用Zend_Search_Lucene的构造函数。_construct($directory=null,$c
6、reate=false),23.2.3 索引的常用方法,Zend_Search_Lucene提供了许多有用的方法用于获取索引对象的相关信息并对其进行操作。本小节来介绍常用的索引对象的方法,合理使用这些方法会有助于用户对索引对象进行更符合实际情况的操作。1获取索引的路径2获取文档的数目3设置与获取默认搜索字段4获取所有字段名称,23.3 搜索索引,上一节介绍了如何创建索引及索引对象的常用方法,本节继续来介绍如何对索引进行搜索。本节内容将按照对索引进行搜索的三个步骤,即建立查询、搜索结果以及结果评分来分别作介绍。,23.3.1 建立查询,使用过数据库搜索的读者都知道,要对数据库进行搜索,关键是要创
7、建相应的SQL语句。而要对Zend_Search_Lucene索引执行搜索,也需要相应的查询(Query)。有两种方法可以在索引中进行搜索,第一种方法是使用查询分析程序(Query Parser)来从字符串中创建查询;第二种方法是通过Zend_Search_Lucene提供自己创建的API进行查询。,23.3.2 搜索的结果,Zend_Search_Lucene_Search_QueryHit对象还可以将Zend_Search_Lucene_Document中的各个字段作为属性陈列出来。如在代码23-8.php中,结果集就有id、score与title等几个属性。索引中原始的Zend_Sear
8、ch_Lucene_Document对象可以从Zend_Search_Lucene_Search_QueryHit结果中获得。可以使用索引对象的getDocument()方法来获取文档进行索引的部分,并且还可以使用getFieldValue()方法来获取指定字段的值。代码23-8.php,就使用了这种方法。能够获取的Zend_Search_Lucene_Document对象的字段是在进行索引的时候决定的。由索引创建程序在文档中建立的文档字段要么是被索引的,要么是被索引并保存的。,23.3.3 结果的Score,对指定索引进行搜索,所搜索的结果Zend_Search_Lucene_Search_
9、QueryHit中会包括Score属性。该属性即搜索结果的分值。Zend_Search_Lucene使用和Java Lucene一样的评分算法。搜索结果是按照分值进行排序的。分值越大,相应的搜索结果就越靠前。不同的分值意味着一篇文档相比另一篇更能匹配查询要求。评分的标准粗略地说,如果文档字段中包含更多的搜索项或短语的搜索结果,则将会具有更高的分值。搜索结果的分值可以通过score属性进行获取。,23.4 查询语句语法,上一节所介绍的对索引进行搜索的实例中,使用了最简单的Query查询语句(使用基本的字符串匹配)。实际上Zend_Search_Lucene中的Query查询支持很多的操作符,这些
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 文本 搜索引擎 ZendSearchLucene

链接地址:https://www.31ppt.com/p-6297821.html