public void DeleteIndex(params Term[] terms) { using var readLock = new EnterReaderWriterLock(readerWriteLock); IndexWriter.DeleteDocuments(terms); indexChangeCount++; }
public void DeleteIndex(params Query[] searchQueries) { using var readLock = new EnterReaderWriterLock(readerWriteLock); IndexWriter.DeleteDocuments(searchQueries); indexChangeCount++; }
public void DeleteIndex(Query query, out Document[] documentsBeenDeleted) { using var readLock = new EnterReaderWriterLock(readerWriteLock); using var searcher = GetUseIndexSearcher(); documentsBeenDeleted = searcher.IndexSearcher.Search(query, int.MaxValue).ScoreDocs.Select(hit => searcher.IndexSearcher.Doc(hit.Doc)).ToArray(); IndexWriter.DeleteDocuments(query); indexChangeCount++; }
public void Dispose() { using var readLock = new EnterReaderWriterLock(readerWriteLock, false); if (!isDisposing) { isDisposing = true; indexChangeCount = 0; indexReader?.Dispose(); indexWriter?.Dispose(); } }
public Document[] SearchWithSpecificFields(Query query, int maxResults, params string[] fieldsNeedToLoad) { fieldsNeedToLoad.RequireContainsElement(nameof(fieldsNeedToLoad)); using var readLock = new EnterReaderWriterLock(readerWriteLock); using var searcher = GetUseIndexSearcher(); return(searcher.IndexSearcher.Search(query, maxResults).ScoreDocs.Select(hit => { var visitor = new DocumentStoredFieldVisitor(fieldsNeedToLoad); searcher.IndexSearcher.Doc(hit.Doc, visitor); return visitor.Document; }).ToArray()); }
public Document[] Search(Query query, int maxResults, Filter filter = null) { using var readLock = new EnterReaderWriterLock(readerWriteLock); using var searcher = GetUseIndexSearcher(); Document[] documents; if (filter != null) { documents = searcher.IndexSearcher.Search(query, filter, maxResults).ScoreDocs.Select(hit => searcher.IndexSearcher.Doc(hit.Doc)).ToArray(); } else { documents = searcher.IndexSearcher.Search(query, maxResults).ScoreDocs.Select(hit => searcher.IndexSearcher.Doc(hit.Doc)).ToArray(); } return(documents); }
public void BuildIndex(IEnumerable <Document> documents, bool needCommit, bool triggerMerge = false, bool applyAllDeletes = false) { using var readLock = new EnterReaderWriterLock(readerWriteLock); IndexWriter.AddDocuments(documents); if (triggerMerge || applyAllDeletes) { IndexWriter.Flush(triggerMerge, applyAllDeletes); } if (needCommit) { IndexWriter.Commit(); } indexChangeCount++; }