Lucene入門草稿

2021-08-29 13:19:05 字數 2633 閱讀 9665

索引3種方式:倒排、字尾陣列和簽名檔案.

bufferwriter writer = new bufferwriter(new filewriter(destfile)); 

bufferreader reader = new bufferreader(new filereader(readfile));

string line = reader.readline();

while (line != null)

reader.close();

writer.close();

store類的3個屬性:

store.no 不需儲存

store.yes 需儲存

store.compress 壓縮儲存

index類的4個屬性

index.no 不需索引

index.tokenized 分詞索引

index.un_tokenized 不分詞索引

index.no_norms 索引,但不使用analyzer,且禁止參加評分

indexwriter構造方法:

private indexwriter(directory d, analyzer a, final boolean create, boolean closedir) 

public indexwriter(file path, analyzer a, boolean create)

throws ioexception

public indexwriter(directory d, analyzer a, boolean create)

throws ioexception

往indexwriter中新增document

public void adddocument(document doc) throws ioexception 

public void adddocument(document doc, analyzer analyzer) throws ioexception

}

注意:在使用adddocument方法後,一定要使用indexwriter的close方法關閉索引器。否則,索引不會被最終建立,同時可能出現下次加入索引時目錄鎖定的問題。

documentwriter的構造方法:

documentwriter(directory directory, analyzer analyzer,

similarity similarity, int maxfieldlength)

documentwriter(directory directory, analyzer analyzer, indexwriter writer)

documentwriter的adddocument方法:

final void adddocument(string segment, document doc)

throws ioexception finally

// invert doc into postingtable

postingtable.clear(); // clear postingtable初始化儲存所有詞條的hashtable

fieldlengths = new int[fieldinfos.size()]; // init fieldlengths

fieldpositions = new int[fieldinfos.size()]; // init fieldpositions所有field在分析完畢後的最終position

fieldoffsets = new int[fieldinfos.size()]; // init fieldoffsets

fieldboosts = new float[fieldinfos.size()]; // init fieldboosts

arrays.fill(fieldboosts, doc.getboost());

invertdocument(doc);//倒排document中每field

// sort postingtable into an array對詞條進行排序

posting postings = sortpostingtable();

// write postings把詞條資訊寫入索引,主要是向.frq和.prx檔案中寫入詞條的頻率和位置資訊

writepostings(postings, segment);

// write norms of indexed fields把得分資訊寫入索引,主要是向.f檔案中寫入

writenorms(segment);

}

索引目錄內的檔案:

segment,是乙個邏輯概念,在每個segment時,有許多的document。每個segment內的所有索引檔案都具有相同的字首,但字尾不同。每個segment的名稱都是由segmentinfos.counter先加1,再轉成36進製,再在前面加上_而成。segmentinfos.counter的值其實就是當前segemnt中總共的文件數量。

而乙個目錄下只有乙個segments和deleable檔案

lucene入門學習

我們生活中的資料總體分為兩種 結構化資料和非結構化資料 全文檢索 將非結構化資料中的一部分資訊提取出來,重新組織,使其變得有一定結構,然後對此有一定結構的資料進行搜尋,從而達到搜尋相對較快的目的。這部分從非結構化資料中提出的然後重新組織的資訊,我們稱之為索引。這種先建立索引,再對索引進行搜尋的過程就...

Lucene的入門例子

1.lucene的基本步驟 配 與jar包版本 2.示例的 3.完成示例後再該延伸到哪些知識 jar包版本 一 從資料庫中查資料 爬資料 1 public arraylistgetdate string sql throws sqlexception 把資料庫裡的資料取出來 return item ...

Lucene快速入門(二)

三 lucene入門例項 搜尋索引 搜尋索引作為lucene兩大基本操作之一,涉及到很多具體的搜尋設定,這裡先用乙個簡單的搜尋例項來展示lucene的搜尋功能,如下 public void query throws parseexception,corruptindexexception,ioexc...