Lucene入门基础教程
1.1 全文检索的概念
1) 从大量的信息中快速、准确地查找出要的信息
2) 搜索的内容是文本信息(不是多媒体)
3) 搜索的方式:不是根据语句的意思进行处理。如果要搜索的文本为” 2012年的春晚有赵本山吗”,那么含有这些词(2012年、春晚、赵本山)就能搜索出来。每一个词都是关键词。
4) 全面、快速、准确是衡量全文检索系统的关键指标。
5) 概括:
a) 只处理文本
b) 不处理语义
c) 搜索时英文不区分大小写
d) 结果列表有相关度排序
全文检索应用场景:
* 信息量必须特别大
* 做一个全文检索的指标
快速
准确
站内搜索
通常用于在大量数据出现的系统中,找出你想要的资料。常见的有
a) bbs的关键字搜索
baidu贴吧 林志玲 、胡汉三
b) 商品网站的搜索等
中关村在线 商品的名称、电脑硬件名称 (CPU)
c) 文件管理系统
对文件的搜索功能。Window的文件搜索
1.3.2垂直搜索
a) 是针对 某个行业的搜索引擎
b) 是搜索引擎的细分和延伸
c) 是针对网页库中的专门信息的整合
d) 其特点是专、深、精,并具有行业色彩
e) 可以应用于购物搜索、房产搜索、人才搜索
1.1 全文检索与数据库搜索的区别
1.4.1数据库的搜索
类似:select * from 表名 where 字段名 like ‘%关键字%’
例如:select * from article where content like’%here%’
结果: where here shere
缺点:
1) 搜索效果比较差
2) 在搜索的结果中,有大量的数据被搜索出来,有很多数据是没有用的。
3) 查询速度在大量数据的情况下是很难做到快速的。
1.4.2全文检索
1) 搜索结果按相关度排序:意味着只有前几个页面对于用户来说是比较有用的,其他的结果与用户想要的答案很可能相差甚远。数据库搜索是做不到相关度排序的。
2) 因为全文检索是采用引索的方式,所以在速度上肯定比数据库方式like要快。
3) 所以数据库不能代替全文检索。
Lucene 的详细介绍:请点这里
Lucene 的下载地址:请点这里
全文检索只是一个概念,而具体实现有很多框架,lucene是其中的一种。Lucene的主页http://lucene.apache.org/。本文用的是3.0.1版本。
互联网搜索结构图
说明:
1) 当用户打开www.baidu.com网页搜索某些数据的时候,不是直接找的网页,而是找的百度的索引库。索引库里包含的内容有索引号和摘要。当我们打开www.baidu.com时,看到的就是摘要的内容。
2) 百度的索引库的索引和互联网的某一个网站对应。
3) 当用户数据要查询的关键字,返回的页面首先是从索引库中得到的。
4) 点击每一个搜索出来的内容进行相关网页查找,这个时候才找的是互联网中的网页。
2.2 lucene的大致结构框图
说明:
1) 在数据库中,数据库中的数据文件存储在磁盘上。索引库也是同样,索引库中的索引数据也在磁盘上存在,我们用Directory这个类来描述。
2) 我们可以通过API来实现对索引库的增、删、改、查的操作。
3) 在数据库中,各种数据形式都可以概括为一种:表。在索引库中,各种数据形式也可以抽象出一种数据格式为Document。
4) Document的结构为:Document(List<Field>)
5) Field里存放一个键值对。键值对都为字符串的形式。
6) 对索引库中索引的操作实际上也就是对Document的操作。