Example #1
0
        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);
        }
Example #2
0
        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();
                    }
                }
            }
        }
Example #3
0
        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));
        }