lucene簡明學習筆記

全文索引工具中,都是由這樣三部分組成:數據庫

1,索引部分 2,分詞部分 3,搜索部分工具

建立索引過程:1建立directory2建立writer(索引),3建立文檔而且添加索引 4查詢索引的基本信息 刪除和更新索引。spa

模糊查詢:orm

Query query=new FuzzyQuery(new Term(name,make));對象

public void index(){排序

 

//建立directory索引

//建立indexwriter文檔

//建立document對象get

//爲document添加fieldit

//經過indexwriter添加文檔到索引中

}

存儲域選項:

Field.Store.Yes /No

設置爲Yes表示把這個域的內容徹底存儲到文件中,方便進行文本的還原 doc.get

設置爲No表示把這個域的內容不存儲到文件中,但能夠被索引,此時內容沒法被還原。

摘要須要存儲。

索引域選項:

Field.Index

.ANALYZED:進行分詞和索引,適用於標題,內容等

.NOT_ANALYZED 進行索引,可是不進行分詞,如身份證號碼,姓名,id等,適用於精確索引

.ANALYZED_NOT_NORMS:進行分詞可是不存儲norms信息,這個norms中包括了建立索引的時間和權值等信息(評分,顯示的排序信息)

.NOT_NORMS既不進行分詞,也不存儲norms信息(不多用)

.NO不進行索引。

最佳實踐:  NOT_ANALYZED_NOT_NORMS  YES 標示符(主鍵,文件名),電話號碼, 身份證號碼,姓名,日期

ANALYZED                     YES  文檔標題和摘要

ANALYZED      NO 文檔正文

NO        YES 文檔類型,數據庫主鍵(不進行索引)

NOT_ANALYZED     NO 隱藏關鍵字

添加索引:writer.add(doc)

更新索引|替換索引:writer.updateDocument(new Term("id","1"), doc);

從新索引:writer.deleteall();

刪除索引:writer.deleteDocuments(new Term("id","1"));

完全刪除索引:writer.forceMergeDeletes();

恢復刪除的索引:reader.undeleteAll();

查詢索引:readerxxx

 

 

 

域能加權,文檔不能加權:setBoost

 

indexreader最好創建成單例的

delete能夠用reader.deletDocument(new term(id,1))

不關閉索引能夠用writer.conmit

相關文章
相關標籤/搜索