索引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構造方法:
往indexwriter中新增documentprivate 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
注意:在使用adddocument方法後,一定要使用indexwriter的close方法關閉索引器。否則,索引不會被最終建立,同時可能出現下次加入索引時目錄鎖定的問題。public void adddocument(document doc) throws ioexception
public void adddocument(document doc, analyzer analyzer) throws ioexception
}
documentwriter的構造方法:
documentwriter的adddocument方法:documentwriter(directory directory, analyzer analyzer,
similarity similarity, int maxfieldlength)
documentwriter(directory directory, analyzer analyzer, indexwriter writer)
索引目錄內的檔案: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...