文本搜索引擎(ZendSearchLucene)

上传人:宝路 文档编号:48195779 上传时间:2018-07-11 格式:PPT 页数:27 大小:168.65KB
返回 下载 相关 举报
文本搜索引擎(ZendSearchLucene)_第1页
第1页 / 共27页
文本搜索引擎(ZendSearchLucene)_第2页
第2页 / 共27页
文本搜索引擎(ZendSearchLucene)_第3页
第3页 / 共27页
文本搜索引擎(ZendSearchLucene)_第4页
第4页 / 共27页
文本搜索引擎(ZendSearchLucene)_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《文本搜索引擎(ZendSearchLucene)》由会员分享,可在线阅读,更多相关《文本搜索引擎(ZendSearchLucene)(27页珍藏版)》请在金锄头文库上搜索。

1、第23章 文本搜索引擎(Zend_Search_Lucene)通常的网站系统中,全站搜索是一个非常实用又十分便 捷的功能。用户可以使用此功能在最短的时间内找出自己所 需要的信息。通常的全站搜索功能都是需要数据库后台支持 的,因为这样可以使用SQL语句强大的查询功能,而同样的 文本搜索引擎则相对较少。本章所要介绍的 Zend_Search_Lucene就是Zend Framework所提供的基 于文本的通用搜索引擎。通过本章内容的学习,读者可以领 会到使用Search_Lucene文本搜索引擎所带来的惊喜。 23.1 Zend_Search_Lucene简介本节先来介绍关于Zend_Search

2、_Lucene的一些基础 内容,其中包括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,$encodin g=) Zend_Search_Lu

5、cene_Field:Binary($name,$value) 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的构造函数

6、。 _construct($directory = null, $create = false)23.2.3 索引的常用方法Zend_Search_Lucene提供了许多有用的方法用于获 取索引对象的相关信息并对其进行操作。本小节来介绍常用 的索引对象的方法,合理使用这些方法会有助于用户对索引 对象进行更符合实际情况的操作。 1获取索引的路径 2获取文档的数目 3设置与获取默认搜索字段 4获取所有字段名称23.3 搜索索引上一节介绍了如何创建索引及索引对象的常用方法,本 节继续来介绍如何对索引进行搜索。本节内容将按照对索引 进行搜索的三个步骤,即建立查询、搜索结果以及结果评分 来分别作介绍。2

7、3.3.1 建立查询使用过数据库搜索的读者都知道,要对数据库进行搜索 ,关键是要创建相应的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、8.php中,结果集就有id、score 与title等几个属性。 索引中原始的Zend_Search_Lucene_Document对象 可以从Zend_Search_Lucene_Search_QueryHit结果中获 得。可以使用索引对象的getDocument()方法来获取文档进 行索引的部分,并且还可以使用getFieldValue()方法来获取 指定字段的值。代码23-8.php,就使用了这种方法。 能够获取的Zend_Search_Lucene_Document对象的 字段是在进行索引的时候决定的。由索引创建程序在文档中 建立的文档字段要么是被索引的,要么是被索引并保存的。23.

9、3.3 结果的Score对指定索引进行搜索,所搜索的结果 Zend_Search_Lucene_Search_QueryHit中会包括Score 属性。该属性即搜索结果的分值。Zend_Search_Lucene 使用和Java Lucene一样的评分算法。搜索结果是按照分值 进行排序的。分值越大,相应的搜索结果就越靠前。不同的 分值意味着一篇文档相比另一篇更能匹配查询要求。 评分的标准粗略地说,如果文档字段中包含更多的搜索 项或短语的搜索结果,则将会具有更高的分值。搜索结果的 分值可以通过score属性进行获取。23.4 查询语句语法上一节所介绍的对索引进行搜索的实例中,使用了最简 单的Qu

10、ery查询语句(使用基本的字符串匹配)。实际上 Zend_Search_Lucene中的Query查询支持很多的操作符, 这些众多的操作符组成了一个完成的语言体系。本节就介绍 查询语句的语法。23.4.1 Query的项在Zend_Search_Lucene中,一个Query语句被分成 项与操作两部分。其中的项包括三种,分别是单独项、短语 项和子查询项。 单独项为一个单个的字符串(不包括空格)。如“test” 或者“hello”等。 短语项是一个字符串的组合(可以包括空格)。如 “hello world”等。 子查询项是一个被半角括号包括起来的短语项。如 “(hello dolly)”等。23

11、.4.2 查询字段如果要对指定字段内容进行搜索,可以使用字段名后加 “:”(冒号)加搜索项的方法进行。如以下代码就设定在字 段title中进行搜索。 title:title title:this is right title:this is right23.4.3 布尔操作符Zend_Search_Lucene也支持在查询语句中使用布尔 操作符,以给查询提供更多的条件。这些布尔操作符包括 “AND”(逻辑与)、“+”(加号)、“OR”(逻辑或)、 “NOT”(逻辑非)以及“-”(减号)五种。下面将就这五种 操作符分别作介绍。 1AND操作符 2OR操作符 3NOT操作符 4+操作符 5-操作符

12、23.4.4 特殊字符的过滤在Zend_Search_Lucene中的特殊字符,是用于操作 的“+”、“-” 、“ abstract function createFile($filename); abstract function deleteFile($filename); abstract function fileExists($filename); abstract function fileLength($filename); abstract function fileModified($filename); abstract function renameFile($from, $to); abstract function touchFile($filename); abstract function getFileObject($filename);23.8 小结本章介绍了Zend Framework中的 Zend_Search_Lucene组件。使用该组件可以创建基于文 本的全文搜索引擎。由于该组件正处于发展期,所以其效率 及功能还有待进一步提高,可能在后续版本中会得到加强。 另外,该组件并不能直接支持中文,所以想要使用此组件进 行全中文的搜索,还需要使用自定义分词程序及其他相关内 容来实现。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号