今天继续讲的是lucene
的分词器,汤兄先回顾了昨天的所学内容,很好。今天讲了lucene
的细节,比如分词器和高亮器,以及高级搜索等功能的实现框架Compass
,案例是传智的贴吧搜索功能的实现,用的当然也是lucene
。
全文检索(Lucene
)的深入
分词器:对文本资源进行切分,将文本按规则切
分为一个个可以进行索引的最小单位(关键词)。
某文档中的一段文本,经过分词后如下:
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
10
|
11
|
12
|
13
|
在
|
Internet
|
上
|
采集
|
信息
|
的
|
软件
|
被
|
叫做
|
爬虫
|
或
|
蜘蛛
|
。
|
建立索引和进行搜索时都要用到分词器。为了保证能正确的搜索到结果,在建立索引
与进行搜索时使用的分词器应是同一个。
全文检索不区分大小写
对于中文分词,通常有三种方式:单字分词、二分法分词、词典分词。
最好的分词器:词库分词
高亮器:
1.作用:
1.截取摘要(大小)
2.高亮关键字(前缀
后缀)
2.怎么用:
过滤器
Filter
RangeFilter,可以对搜索出来的结果进行过
滤。
排序
sort
Lucene的搜索结果默认按相关度排序的。所谓相关度,就是文档的得分。Lucene有一个评分机制,就是对检索结果按某种标准进行评估,然后按分值的高低来对结果进行排序。
查询对象
TermQuery
Term是查询的最小单位,第一个参数是属性,第
二个是要查询的内容,下面的代码的
整个意思就是在title中查询检索
Term term = new
Term(“title”,”检索”);
Query query = new
TermQuery(term);
关键词查询RangeQuery
范围查询WildcardQueryPhraseQuery
短语查询
BooleanQuery
public void
add(Query query, Occur occur)
Occur 用于表示布尔查询子句关系的类,包括:
Occur.MUST,Occur.MUST_NOT,Occur.SHOULD。
1,
MUST和MUST:取得连个查询子句的交集。
2,
MUST和MUST_NOT:包含MUST并且查询结果中不包含MUST_NOT的检索结果。
3,
SHOULD与SHOULD,表示“或”关系,最终检索结果为所有检索子句的并集。
Compass框架
Lucene +
Hibernate
Hibernate操作实现原理:
主配置文件 :hibernate.cfg.xml
1.连接信息
2.声明映射文件
3.其他配置
映射文件:.hbm.xml
对象
– 表
属性
– 列
同样,Compass实现原理如图:
posted on 2010-01-31 23:35
d66380022 阅读(283)
评论(0) 编辑 收藏