internal static void InitialiseBlankIndex(Directory directory)
 {
     new IndexWriter(directory,
                     GetAnalyzer(),
                     true,
                     IndexWriter.MaxFieldLength.UNLIMITED).Dispose();
 }
        internal static global::Lucene.Net.Index.IndexReader CreateLuceneReader(Directory directory, bool secondAttempt = false)
        {
            try
            {
                // Scan the index directory for segments files to check for corruption
                var files         = directory.ListAll();
                var foundSegments = false;
                foreach (var file in files)
                {
                    if (file.StartsWith("segments", StringComparison.InvariantCultureIgnoreCase))
                    {
                        foundSegments = true;
                        break;
                    }
                }
                if (!foundSegments)
                {
                    foreach (var file in files)
                    {
                        directory.DeleteFile(file);
                    }
                }

                var reader = global::Lucene.Net.Index.IndexReader.Open(directory, true);
                return(reader);
            }
            catch (FileNotFoundException fnf)
            {
                InitialiseBlankIndex(directory);
                if (!secondAttempt)
                {
                    return(CreateLuceneReader(directory, true));
                }
                throw new InvalidOperationException("Could not create an index reader - tried twice", fnf);
            }
            catch (Exception ex)
            {
                throw new InvalidOperationException("Could not create an index reader", ex);
            }
        }
 internal static IndexWriter CreateLuceneWriter(StandardAnalyzer standardAnalyzer, Directory directory)
 {
     return(new IndexWriter(directory,
                            standardAnalyzer,
                            false,
                            IndexWriter.MaxFieldLength.UNLIMITED));
 }
        internal static global::Lucene.Net.Index.IndexReader CreateLuceneReader(Directory directory, bool secondAttempt = false)
        {
            try
            {
                // Scan the index directory for segments files to check for corruption
                var files = directory.ListAll();
                var foundSegments = false;
                foreach (var file in files)
                {
                    if (file.StartsWith("segments", StringComparison.InvariantCultureIgnoreCase))
                    {
                        foundSegments = true;
                        break;
                    }
                }
                if (!foundSegments)
                {
                    foreach (var file in files)
                    {
                        directory.DeleteFile(file);
                    }
                }

                var reader = global::Lucene.Net.Index.IndexReader.Open(directory, true);
                return reader;
            }
            catch (FileNotFoundException fnf)
            {
                InitialiseBlankIndex(directory);
                if (!secondAttempt) return CreateLuceneReader(directory, true);
                throw new InvalidOperationException("Could not create an index reader - tried twice", fnf);
            }
            catch(Exception ex)
            {
                throw new InvalidOperationException("Could not create an index reader", ex);
            }
        }
 internal static IndexWriter CreateLuceneWriter(StandardAnalyzer standardAnalyzer, Directory directory)
 {
     return new IndexWriter(directory,
                            standardAnalyzer,
                            false,
                            IndexWriter.MaxFieldLength.UNLIMITED);
 }
 internal static void InitialiseBlankIndex(Directory directory)
 {
     new IndexWriter(directory,
                     GetAnalyzer(),
                     true,
                     IndexWriter.MaxFieldLength.UNLIMITED).Dispose();
 }