三 索引建立步驟

2021-09-01 13:54:23 字數 2443 閱讀 5301

索引建立步驟

1、建立directory

directory directory = fsdirectory.open(new file("d:/test/index01"));

2、建立writer

indexwriter writer = new indexwriter(directory, new indexwriterconfig(version.lucene_35,new standardanalyzer(version.lucene_35)));

3、建立文件並且新增索引

文件和域的概念很重要

文件相當於表中的每一條記錄,域相當於表中每乙個字段

document document = null;

collectionfiles = fileutils.listfiles(new file("d:/test/lucene"),filefilefilter.file, null);

for (file file : files)

4、查詢索引的基本資訊

indexreader reader = indexreader.open(directory);

//通過reader可以有效的獲取到文件的數量

system.out.println("numdocs:" + reader.numdocs() );//可以使用的文件數量

system.out.println("maxdocs:" + reader.maxdoc() );//所有的文件數量,包括被刪除的文件

system.out.println("deletedocs:" + reader.numdeleteddocs() );//被刪除的文件數量

reader.close();

5、刪除索引

//引數是乙個選項,可以是乙個query,也可以是乙個term,term是乙個精確查詢的值

//此時刪除的文件並不會被完全刪除,而是儲存在乙個**站中的,可以恢復

writer.deletedocuments (new term ("id", "1"));

writer.commit();

6、恢復刪除

try {

indexreader reader = indexreader.open(directory, false);

//恢復時,必須把indexreader的唯讀(readonly)設定為false

reader.undeleteall ();

reader.close();

7、強制刪除,相當於刪除**站裡面的,徹底刪除了

writer = new indexwriter(directory, new indexwriterconfig(version.lucene_35, new standardanalyzer(version.lucene_35)));

writer.forcemergedeletes ();

8、優化和合併索引

writer = new indexwriter(directory, new indexwriterconfig(version.lucene_35, new standardanalyzer(version.lucene_35)));

//會將索引合併為2段,這兩段中的被刪除的資料會被清空

//特別注意:此處lucene在3.5之後不建議使用,因為會消耗大量的開銷,

//lucene會根據情況自動處理的

writer.forcemerge (2);

9、更新索引

writer = new indexwriter(directory, new indexwriterconfig(version.lucene_35,

new standardanalyzer(version.lucene_35)));

/** lucene並沒有提供更新,這裡的更新操作其實是如下兩個操作的合集

* 先刪除之後再新增

*/document doc = new document();

doc.add(new field("id", "11", field.store.yes, field.index.not_analyzed_no_norms));

doc.add(new field("email", emails[0], field.store.yes, field.index.not_analyzed));

doc.add(new field("content", contents[0], field.store.no, field.index.analyzed));

doc .add(new field("name", names[0], field.store.yes, field.index.not_analyzed_no_norms));

writer.updatedocument(new term("id", "1"), doc);

//會把原來id=1的那個文件刪掉,新增id=11的那個文件

Activity建立三步驟

1 新建類繼承acticity或其子類 setcontextview r,layout.testactivity 2 在androidmanifest中宣告 3 建立layout並在activity的oncreate中設定 手動建立過程 在manifest中宣告 testactivity前面的 代表...

c mysql建立索引 MySQL 建立索引

1 索引建立原則 1 搜尋的索引列,不一定是所要選擇的列。換句話說,最適合索引的列是出現在where子句中的列,或連線子句中指定的列,而不是出現在select關鍵字後的選擇列表中的列。2 使用唯一索引。考慮某列中值的分布。索引的列的基數越大,索引的效果越好。3 使用短索引。如果對字串列進行索引,應該...

Vue建立步驟

最近開始學習vue,順便記錄一下使用的步驟心得 第一步 切換映象源,使用npm的映象源太慢了在此處切換為 映象源 npm install g cnpm registry 第二布 建立專案資料夾,並cd到該資料夾,安裝vue腳手架,vue cli npm install g vue cli g代表全域...