随笔-54  评论-0  文章-2  trackbacks-0
     今天继续讲的是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.MUSTOccur.MUST_NOTOccur.SHOULD

 

1,  MUSTMUST:取得连个查询子句的交集。

2,  MUSTMUST_NOT:包含MUST并且查询结果中不包含MUST_NOT的检索结果。

3,  SHOULDSHOULD,表示“或”关系,最终检索结果为所有检索子句的并集。


                                Compass框架

Lucene  + Hibernate

Hibernate操作实现原理:

主配置文件 hibernate.cfg.xml

            1.连接信息

                     2.声明映射文件

            3.其他配置

映射文件:.hbm.xml

          对象

                属性

同样,Compass实现原理如图:

posted on 2010-01-31 23:35 d66380022 阅读(283) 评论(0)  编辑  收藏