[C#]Lucene.net–增加索引,清除所有索引
2012-10-05
如何增加索引,這問題從我寫這一系列文章以來已經被問很多次了~哈哈~
其實看過一些文件..在Lucene. 中,其實都是重做index ..
但是你確保,你的資料是新的,也就是你的定義的Id 欄位不會重複
增加索引值
在初始化 IndexWriter 的時候 ..參數create 設定成為false..
IndexWriter indexWriter = new IndexWriter(dir, new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_29), false, IndexWriter.MaxFieldLength.UNLIMITED);
請注意,一旦你將create 參數設成false 您之後做的index 就會累加上去,所以你可以資料會搜尋出來重複的資料..
完整 C# Code :
Stopwatch sw = new Stopwatch();
sw.Start();
//Index 存放路徑
string indexPath = AppDomain.CurrentDomain.BaseDirectory + "\\Index1\\";
FSDirectory dir = FSDirectory.Open(new DirectoryInfo(indexPath));
//IndexWriter
IndexWriter indexWriter = new IndexWriter(dir, new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_29), false, IndexWriter.MaxFieldLength.UNLIMITED);
// 還原且加入需做 index 的欄位
Document doc = new Document();
// 把每一個欄位都建立索引
Field f_Id = new Field("Id", "添加資料Id", Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.NO);
Field f_Age = new Field("Age", "添加資料Age", Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.NO);
Field f_Memo = new Field("Memo", "添加資料Memo", Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.NO);
Field f_BirthDay = new Field("BirthDay", "添加資料Birthday", Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.NO);
doc.Add(f_Id); doc.Add(f_Age); doc.Add(f_Memo); doc.Add(f_BirthDay);
indexWriter.AddDocument(doc);
indexWriter.Optimize();
indexWriter.Commit();
indexWriter.Close();
sw.Stop();
這樣就可以將的資料加入索引..
當然你也可以透過這篇文章(Lucene.net - 透過 IndexReader 刪除索引中的指定資料)提到的
將某筆索引資料刪掉,之後再新增進去..
不過對於大規模的修改,建議您還是重新製作索引…
刪除所有索引
非常的簡單只要呼叫 DeleteAll() 即可..
C# Code :
事實上,當您重做索引的時候,他就已經會刪除上次索引..
單然您有特殊需求,您可以透過 IndexWriter.DeleteAll 進行刪除..
string indexPath = AppDomain.CurrentDomain.BaseDirectory + "\\Index1\\";
FSDirectory dir = FSDirectory.Open(new DirectoryInfo(indexPath));
//IndexWriter
IndexWriter indexWriter = new IndexWriter(dir, new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_29), false, IndexWriter.MaxFieldLength.UNLIMITED);
indexWriter.DeleteAll();
indexWriter.Optimize();
indexWriter.Commit();
indexWriter.Close();
大致筆記到這邊,相信這幾天對於製作索引跟一些技巧都已經大概都說過了…
標籤:
C#
,
Lucene.net
-- Yesterday I wrote down the code. I bet I could be your hero. I am a mighty little programmer. 如果這篇文章有幫助到您,簡單留個言,或是幫我按個讚,讓我有寫下去的動力...