/// <summary> /// 删除Books表信息时 添加删除索引请求至队列 /// </summary> /// <param name="bid"></param> public void Del(int bid) { BookViewMode bvm = new BookViewMode(); bvm.Id = bid; bvm.IT = IndexType.Delete; bookQueue.Enqueue(bvm); }
/// <summary> /// 修改Books表信息时 添加修改索引(实质上是先删除原有索引 再新增修改后索引)请求至队列 /// </summary> /// <param name="books"></param> public void Mod(Books books) { BookViewMode bvm = new BookViewMode(); bvm.Id = books.Id; bvm.Title = books.Title; bvm.IT = IndexType.Modify; bvm.Content = books.ContentDescription; bookQueue.Enqueue(bvm); }
/// <summary> /// 修改Books表信息时 添加修改索引(实质上是先删除原有索引 再新增修改后索引)请求至队列 /// </summary> /// <param name="books"></param> public void Mod(Books books) { BookViewMode bvm = new BookViewMode(); bvm.Id = books.Id; bvm.Title = books.Title; bvm.IT = IndexType.Modify; bvm.Content = books.ContentDescription; bookQueue.Enqueue(bvm); }
/// <summary> /// 修改Books表信息时 添加修改索引(实质上是先删除原有索引 再新增修改后索引)请求至队列 /// </summary> /// <param name="books"></param> public void Mod(Books books) { BookViewMode bvm = new BookViewMode(); bvm.Id = books.Id; bvm.Description = books.Description; bvm.MenuId = books.MenuId; bvm.IT = IndexType.Modify; bvm.CreativeHTML = books.CreativeHTML; bookQueue.Enqueue(bvm); }
/// <summary> /// 更新索引库操作 /// </summary> private void CRUDIndex() { FSDirectory directory = FSDirectory.Open(new DirectoryInfo(indexPath), new NativeFSLockFactory()); bool isExist = IndexReader.IndexExists(directory); if (isExist) { if (IndexWriter.IsLocked(directory)) { IndexWriter.Unlock(directory); } } IndexWriter writer = new IndexWriter(directory, new PanGuAnalyzer(), !isExist, IndexWriter.MaxFieldLength.UNLIMITED); while (bookQueue.Count > 0) { Document document = new Document(); BookViewMode book = bookQueue.Dequeue(); if (book.IT == IndexType.Insert) { document.Add(new Field("id", book.Id.ToString(), Field.Store.YES, Field.Index.NOT_ANALYZED)); document.Add(new Field("MenuId", book.MenuId.ToString(), Field.Store.YES, Field.Index.ANALYZED)); document.Add(new Field("Description", book.Description, Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS)); document.Add(new Field("CreativeHTML", book.CreativeHTML, Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS)); writer.AddDocument(document); } else if (book.IT == IndexType.Delete) { writer.DeleteDocuments(new Term("id", book.Id.ToString())); } else if (book.IT == IndexType.Modify) { //先删除 再新增 writer.DeleteDocuments(new Term("id", book.Id.ToString())); document.Add(new Field("id", book.Id.ToString(), Field.Store.YES, Field.Index.NOT_ANALYZED)); document.Add(new Field("MenuId", book.MenuId.ToString(), Field.Store.YES, Field.Index.ANALYZED)); document.Add(new Field("Description", book.Description, Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS)); document.Add(new Field("CreativeHTML", book.CreativeHTML, Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS)); writer.AddDocument(document); } } writer.Close(); directory.Close(); }
/// <summary> /// 删除Books表信息时 添加删除索引请求至队列 /// </summary> /// <param name="bid"></param> public void Del(int bid) { BookViewMode bvm = new BookViewMode(); bvm.Id = bid; bvm.IT = IndexType.Delete; bookQueue.Enqueue(bvm); }