public static void AddIndex(ProductLuceneViewModel viewModel) { var directory = FSDirectory.Open(new DirectoryInfo(_path)); var analyzer = new StandardAnalyzer(_version, GetStopWords()); using (var writer = new IndexWriter(directory, analyzer, create: false, mfl: IndexWriter.MaxFieldLength.UNLIMITED)) { writer.AddDocument(MapProductToDocument(viewModel)); writer.Optimize(); writer.Commit(); writer.Dispose(); directory.Dispose(); } }
public static void UpdateIndex(ProductLuceneViewModel viewModel) { var directory = FSDirectory.Open(new DirectoryInfo(_path)); var analyzer = new StandardAnalyzer(_version, GetStopWords()); using (var indexWriter = new IndexWriter(directory, analyzer, create: false, mfl: IndexWriter.MaxFieldLength.UNLIMITED)) { var newDoc = MapProductToDocument(viewModel); indexWriter.UpdateDocument(new Term("Id", viewModel.Id.ToString(CultureInfo.InvariantCulture)), newDoc); indexWriter.Commit(); indexWriter.Dispose(); directory.Dispose(); } }
static Document MapProductToDocument(ProductLuceneViewModel viewModel) { var productDocument = new Document(); productDocument.Add(new Field("Id", viewModel.Id.ToString(CultureInfo.InvariantCulture), Field.Store.YES, Field.Index.NOT_ANALYZED)); productDocument.Add(new Field("PrincipleImagePath", viewModel.ImagePath, Field.Store.YES, Field.Index.NOT_ANALYZED)); var nameField = new Field("Name", viewModel.Name, Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS) { Boost = 3 }; productDocument.Add(nameField); productDocument.Add(new Field("Description", viewModel.Description, Field.Store.NO, Field.Index.ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS)); return(productDocument); }