public void MrsJones() { var dir = new RAMDirectory(); var analyzer = new LowerCaseKeywordAnalyzer(); var writer = new IndexWriter(dir, analyzer, true, IndexWriter.MaxFieldLength.UNLIMITED); var document = new Lucene.Net.Documents.Document(); document.Add(new Field("Name", "MRS. SHABA", Field.Store.NO, Field.Index.ANALYZED_NO_NORMS)); writer.AddDocument(document); writer.Close(true); var searcher = new IndexSearcher(dir, true); var termEnum = searcher.GetIndexReader().Terms(); while (termEnum.Next()) { var buffer = termEnum.Term().Text(); Console.WriteLine(buffer); } var queryParser = new RangeQueryParser(Version.LUCENE_29, "", analyzer); var query = queryParser.Parse("Name:\"MRS. S*\""); Console.WriteLine(query); var result = searcher.Search(query, 10); Assert.NotEqual(0, result.TotalHits); }
private void OpenIndexOnStartup() { analyzer = new LowerCaseKeywordAnalyzer(); snapshotter = new SnapshotDeletionPolicy(new KeepOnlyLastCommitDeletionPolicy()); bool resetTried = false; bool recoveryTried = false; while (true) { LuceneDirectory luceneDirectory = null; try { luceneDirectory = OpenOrCreateLuceneDirectory(indexDirectory); // Skip sanity test if we are running in memory. Index will not exist anyways. if (!configuration.RunInMemory && !IsIndexStateValid(luceneDirectory)) { throw new InvalidOperationException("Sanity check on the index failed."); } directory = luceneDirectory; writer = new IndexWriter(directory, analyzer, snapshotter, IndexWriter.MaxFieldLength.UNLIMITED); writer.SetMergeScheduler(new ErrorLoggingConcurrentMergeScheduler()); currentIndexSearcherHolder.SetIndexSearcher(new IndexSearcher(directory, true)); break; } catch (Exception e) { if (resetTried) { throw new InvalidOperationException("Could not open / create index for file system '" + name + "', reset already tried", e); } if (recoveryTried == false && luceneDirectory != null) { recoveryTried = true; StartupLog.WarnException("Could not open index for file system '" + name + "'. Trying to recover index", e); StartupLog.Info("Recover functionality is still not implemented. Skipping."); } else { resetTried = true; StartupLog.WarnException("Could not open index for file system '" + name + "'. Recovery operation failed, forcibly resetting index", e); TryResettingIndex(); } } } }
public void Initialize() { if (System.IO.Directory.Exists(path) == false) { System.IO.Directory.CreateDirectory(path); } directory = FSDirectory.Open(new DirectoryInfo(path)); if (IndexWriter.IsLocked(directory)) { IndexWriter.Unlock(directory); } analyzer = new LowerCaseKeywordAnalyzer(); writer = new IndexWriter(directory, analyzer, IndexWriter.MaxFieldLength.UNLIMITED); writer.SetMergeScheduler(new ErrorLoggingConcurrentMergeScheduler()); currentIndexSearcherHolder.SetIndexSearcher(new IndexSearcher(directory, true)); }