lucene的Compass總結1

lucene搜索引擎與數據庫like查詢的比較java

1>在數據量比較大查詢字段比較多的狀況下,若是採用數據庫like查詢,性能比較差,而採用lucene來查詢,性能相對like查詢要好sql

2>若是採用lucene進行搜索,搜索到的結果相關度比較高,面具把匹配度高的記錄排在最前面,而數據庫的like語句查詢只會查詢有關鍵字的記錄,其內容相關度不高,而且不能實現把匹配度高的記錄排在最前面數據庫

3>採用lucene進行搜索,可以進行高亮顯示,而數據庫的sql語句查詢作不到這一點編程

 lucene的使用:
  1>創建索引
  2>查詢索引
   會用到一個分詞技術
 分詞原理:一元分詞(一個字一個字的分)/二元分session

詞(二個字二個字的分)/字典分詞(匹配度最高,效果最好,app

必須有字典,paoding分詞器)
lucene 封裝框架:Compass API(面向對象操做索引 Object 框架

search engine/mapping,對象搜索引擎映射框架)[OSEM產post

品]性能

Compass的使用
 1>設置實體,,並映射爲搜索實體(@Searchale-->把該類定義爲搜索實體,該實體與索引中的document進行映射)
 2>設置標識屬性(@SearchableId-->定義該屬性爲搜索實體的標識屬性,由於映射到doucment中的id字段;通@SearchProperty(name="XXX")註解定義某個屬性跟document中的某個字段進行映射,name="XXX"表示document中的字段名稱,index屬性(index=Index.NOT_ANALYZED:不分詞,但創建索引;index=Index.ANALYZED:分詞並創建索引))ui

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();
相關文章
相關標籤/搜索