文档介绍:为J2EE应用程序添加全文搜索
什么是全文搜索
Java全文搜索引擎Lucene
pass
深入Lucene API
什么是全文搜索
按关键字搜索的查询方式
只能处理文本
分词+索引
全文搜索和数据库索引的比较
全文搜索
数据库
索引
对文本建立关键字索引
无法使用索引进行LIKE查询
匹配效果
按单词匹配,使用”ant”不会匹配”planting”
无法按单词匹配,使用’%ant%’也会匹配”planting”
匹配度
有匹配度算法,搜索结果按匹配度从高到低排序
无匹配度算法,无法按匹配度对搜索结果排序
可定制性
提供编程接口,容易定制索引规则
只能使用SQL查询,无法定制
Java全文搜索引擎Lucene
纯Java编写的全文搜索引擎
可以嵌入到任何Java应用程序
集成Lucene的Java应用程序:
Eclipse
JIRA
pass实现全文搜索
pass
pass简化了Lucene的API
使用Lucene好比使用JDBC
pass好比使用Hibernate
简化多线程同步问题
pass
定义要搜索的JavaBean
pass
passTransaction
Lucene的存储结构
Lucene
数据库
Document
一条存储记录,包含多个Field
类似数据库表的Record记录
Field
一个字段的完整内容
类似数据库表的Field字段
Hits
代表一个搜索结果,持有一个Document列表
类似SQL查询的ResultSet结果集,包含多个Record
Lucene的重要概念
Directory:存放索引,通常是一个目录
Document:存放一条索引记录
Field:存放一个字段
IndexWriter:增删索引
IndexSearcher:进行搜索并返回结果
Analyzer:对文本进行分词
Highlighter:对搜索结果予以高亮显示
Field索引类型Index
分词索引
不分词索引
不索引
Field存储类型Store
存储
不存储
PRESS
压缩存储