lucene的Compass总结1

lucene搜索引擎与数据库like查询的比较

1>在数据量比较大查询字段比较多的情况下,如果采用数据库like查询,性能比较差,而采用lucene来查询,性能相对like查询要好

2>如果采用lucene进行搜索,搜索到的结果相关度比较高,面具把匹配度高的记录排在最前面,而数据库的like语句查询只会查询有关键字的记录,其内容相关度不高,并且不能实现把匹配度高的记录排在最前面

3>采用lucene进行搜索,能够进行高亮显示,而数据库的sql语句查询做不到这一点

 lucene的使用:
  1>建立索引
  2>查询索引
   会用到一个分词技术
 分词原理:一元分词(一个字一个字的分)/二元分

词(二个字二个字的分)/字典分词(匹配度最高,效果最好,

必须有字典,paoding分词器)
lucene 封装框架:Compass API(面向对象操作索引 Object

search engine/mapping,对象搜索引擎映射框架)[OSEM产

品]

Compass的使用
 1>设置实体,,并映射为搜索实体(@Searchale-->把该类定义为搜索实体,该实体与索引中的document进行映射)
 2>设置标识属性(@SearchableId-->定义该属性为搜索实体的标识属性,因为映射到doucment中的id字段;通@SearchProperty(name="XXX")注解定义某个属性跟document中的某个字段进行映射,name="XXX"表示document中的字段名称,index属性(index=Index.NOT_ANALYZED:不分词,但建立索引;index=Index.ANALYZED:分词并建立索引))

Compass只有添加/删除功能

 

使用可编程方式配置Compass,和sessionFactory差不多,一样是得到一个compassFactory
public Compass cf;
 cf=new CompassAnnotationsConfiguration().setSettion("CompassEnvitronment.CONNECTION","file://XXX")
//指定索引文件存放的目录;CompassEnvitronment.CONNECTION,"ram://XXX"表示把索引文件存放到内存中
.setSettion("compass.engine.analyzer.default.type","net.paoding.analysis.analyzer.PaodingAnalyzer")
//Compass中默认使用的中文分词器是一元分词器,更改默认字典分词器
.setSettion("compass.engine.highlighter.default.formatter.simple.pre","<font color='red'>")
.setSettion("compass.engine.highlighter.default.formatter.simple.post","</font>")
.addScan("com.eason.entity")
//表示自动搜索指定目录下的搜索实体(@Searchale)
.buildCompass();
 使用compass CompassSession session=cf.openSession(); CompassTransaction ct=session.beginTransaction(); session.beginTransaction();
CompassTransaction session.save(Entity);//保存搜索实体到索引文件中去Compass中可以实现增量索引, 当保存实体时,实体是在原有的数据上增加上去的 (这里有个专业解释叫做"实时增量")
session.commit(); 
session.close(); 
com.close();

转载于:https://my.oschina.net/easonwang14/blog/14746

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值