麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

Lucene使用DeleteDocuments刪除索引無效的原因

2019-11-10 19:34:50
字體:
來源:轉載
供稿:網友

今天使用Lucene的DeleteDocuments刪除索引代碼執行了,但是卻還能搜索到該索引

這下面的代碼看一點錯誤都沒有,執行了但是卻沒有真正的刪除索引

public static void DelSingleIndex(Analyzer analyzer, bool b, string path)        {            DirectoryInfo dirInfo = Directory.CreateDirectory(path);            LuceneIO.Directory directory = LuceneIO.FSDirectory.Open(dirInfo);            IndexWriter writer = new IndexWriter(directory, analyzer, b, IndexWriter.MaxFieldLength.LIMITED);            writer.DeleteDocuments(new Term("Id", "-1000"));            writer.Optimize();            writer.Close();        }搞了半天才明白刪不掉的原因是我添加的代碼Id這個字段做了分詞處理,代碼如下

 public static void AddSingleIndex(Analyzer analyzer, bool b, string path)        {            DirectoryInfo dirInfo = Directory.CreateDirectory(path);            LuceneIO.Directory directory = LuceneIO.FSDirectory.Open(dirInfo);            IndexWriter writer = new IndexWriter(directory, analyzer, b, IndexWriter.MaxFieldLength.LIMITED);            Document doc = new Document();            doc.Add(new Field("Id", "-1000", Field.Store.YES, Field.Index.NOT_ANALYZED));//存儲且索引            doc.Add(new Field("Title", "最新的特朗普測試", Field.Store.YES, Field.Index.ANALYZED));//存儲且索引            doc.Add(new Field("Content", "123456789", Field.Store.YES, Field.Index.ANALYZED));//存儲且索引            doc.Add(new Field("PubDate", DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"), Field.Store.YES, Field.Index.NO));//存儲且不需要索引            doc.Add(new Field("LinkUrl", "testlink", Field.Store.YES, Field.Index.NO));//存儲且不需要索引            writer.AddDocument(doc);            writer.Optimize();            writer.Close();        }這里只要將以下代碼

doc.Add(new Field("Id", "-1000", Field.Store.YES, Field.Index.ANALYZED));//存儲且索引改為

doc.Add(new Field("Id", "-1000", Field.Store.YES, Field.Index.NOT_ANALYZED));//存儲不分詞且索引就是因為這個參數設置錯誤導致的

還有種情況就是下面的代碼設置也會導致刪除不成功,代碼如下

doc.Add(new Field("Id", "-1000", Field.Store.YES, Field.Index.NO));因為Lucene在刪除索引時要求刪除對應的Field不能分詞只能是一個詞,而且這個Filed必須索引過

還有個注意點是在刪除時使用Term時的原理是先去搜索滿足條件的記錄然后將所有滿足的記錄刪除,所以官方也建議最好自己定義一個唯一標識來刪除,比如我這邊用的是自己定義的Id,而沒有用Title,還比如新聞編號,產品編號等等


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 在线观看一二区 | 久久精品99国产国产精 | 国产资源在线观看视频 | 亚洲最大中文字幕 | 毛片视频免费观看 | 91久久线看在观草草青青 | 91懂色| 久久久久久久91 | 九九热在线视频免费观看 | 久久免费视频一区 | 精品影视一区二区 | 亚洲男人的天堂在线视频 | 中文字幕网在线 | 一级电影免费 | 欧美日韩国产中文字幕 | 久久福利小视频 | 久久精国 | 亚洲成人精品视频 | sese综合| 在线香蕉视频 | 免费黄色欧美视频 | 91女上位 在线播放 性欧美日本 | 国产精品午夜未成人免费观看 | 91九色福利 | 国产小视频在线观看 | 欧美日韩国产综合网 | 欧美一级棒 | 日韩在线播放中文字幕 | 毛片视频大全 | 羞羞答答视频 | 最新午夜综合福利视频 | 成人国产在线视频 | 精品一区二区三区不卡 | 久久久久女人精品毛片九一 | 亚洲精品有限 | 成人免费网站在线观看视频 | 成人在线视频一区 | 草久影视 | 欧美www| 日韩做爰视频免费 | 欧美日韩亚洲另类 |