private void AddToLuceneIndex(ISearchEntry searchEntry, IndexWriter writer) { // remove older index entry TermQuery searchQuery = new TermQuery(new Term(searchEntry.Key.FieldName, searchEntry.Key.FieldValue)); writer.DeleteDocuments(searchQuery); // add new index entry Document indexDocument = this.BuildIndexDocument(searchEntry); writer.AddDocument(indexDocument); }
//private static string _luceneDir = Path.Combine(HttpContext.Current.Request.PhysicalApplicationPath, "lucene_index"); //private static FSDirectory _directoryTemp; //private static FSDirectory _directory //{ // get // { // if (_directoryTemp == null) // { // _directoryTemp = FSDirectory.Open(new DirectoryInfo(_luceneDir)); // } // if (IndexWriter.IsLocked(_directoryTemp)) // { // IndexWriter.Unlock(_directoryTemp); // } // var lockFilePath = Path.Combine(_luceneDir, "write.lock"); // if (File.Exists(lockFilePath)) // { // File.Delete(lockFilePath); // } // return _directoryTemp; // } //} private Document BuildIndexDocument(ISearchEntry searchEntry) { Document indexDocument = new Document(); indexDocument.Add(new Field(searchEntry.Key.FieldName, searchEntry.Key.FieldValue, Field.Store.YES, Field.Index.NOT_ANALYZED)); foreach (IndexField field in searchEntry.SearchFieldsData) { indexDocument.Add( new Field( field.FieldName, field.FieldValue, field.Store ? Field.Store.YES : Field.Store.NO, field.Analyze ? Field.Index.ANALYZED : Field.Index.NOT_ANALYZED)); } return(indexDocument); }
public void AddUpdateLuceneIndex(ISearchEntry searchEntry) { this.AddUpdateLuceneIndex(new ISearchEntry[1] { searchEntry }); }