Click here to Skip to main content
15,892,072 members
Articles / Web Development / ASP.NET

Lucene.net in asp.net simple example

Rate me:
Please Sign up or sign in to vote.
2.69/5 (11 votes)
19 Oct 2008CPOL1 min read 64.9K   5.1K   32  
How to use lucene.net api from c# in asp.net enviroment
  • luceneexample.zip
  • luceneforgodaddy.zip
    • luceneForGodaddy
      • .svn
        • dir-wcprops
        • empty-file
        • entries
        • format
        • prop-base
          • AssemblyInfo.cs.svn-base
          • Lucene.Net.Search.RemoteSearchable.config.svn-base
          • Lucene.Net.Search.TestSort.config.svn-base
          • Lucene.Net.sln.svn-base
          • Lucene.Net.xml.svn-base
          • Lucene.Net-2.3.1.ndoc.svn-base
          • Lucene.Net-2.3.1-VS2005.csproj.svn-base
          • Lucene.Net-2.3.1-VS2005.sln.svn-base
          • LucenePackage.cs.svn-base
          • Overview.html.svn-base
          • Package.html.svn-base
          • SharpZipLibAdapter.cs.svn-base
          • SupportClass.cs.svn-base
        • props
          • AssemblyInfo.cs.svn-work
          • Lucene.Net.Search.RemoteSearchable.config.svn-work
          • Lucene.Net.Search.TestSort.config.svn-work
          • Lucene.Net.sln.svn-work
          • Lucene.Net.xml.svn-work
          • Lucene.Net-2.3.1.ndoc.svn-work
          • Lucene.Net-2.3.1-VS2005.csproj.svn-work
          • Lucene.Net-2.3.1-VS2005.sln.svn-work
          • LucenePackage.cs.svn-work
          • Overview.html.svn-work
          • Package.html.svn-work
          • SharpZipLibAdapter.cs.svn-work
          • SupportClass.cs.svn-work
        • README.txt
        • text-base
          • AssemblyInfo.cs.svn-base
          • Lucene.Net.Search.RemoteSearchable.config.svn-base
          • Lucene.Net.Search.TestSort.config.svn-base
          • Lucene.Net.sln.svn-base
          • Lucene.Net.xml.svn-base
          • Lucene.Net-2.3.1.ndoc.svn-base
          • Lucene.Net-2.3.1-VS2005.csproj.svn-base
          • Lucene.Net-2.3.1-VS2005.sln.svn-base
          • LucenePackage.cs.svn-base
          • Overview.html.svn-base
          • Package.html.svn-base
          • SharpZipLibAdapter.cs.svn-base
          • SupportClass.cs.svn-base
        • tmp
          • prop-base
          • props
          • text-base
          • wcprops
        • wcprops
          • AssemblyInfo.cs.svn-work
          • Lucene.Net.Search.RemoteSearchable.config.svn-work
          • Lucene.Net.Search.TestSort.config.svn-work
          • Lucene.Net.sln.svn-work
          • Lucene.Net.xml.svn-work
          • Lucene.Net-2.3.1.ndoc.svn-work
          • Lucene.Net-2.3.1-VS2005.csproj.svn-work
          • Lucene.Net-2.3.1-VS2005.sln.svn-work
          • LucenePackage.cs.svn-work
          • Overview.html.svn-work
          • Package.html.svn-work
          • SharpZipLibAdapter.cs.svn-work
          • SupportClass.cs.svn-work
      • Analysis
        • .svn
          • dir-wcprops
          • empty-file
          • entries
          • format
          • prop-base
            • Analyzer.cs.svn-base
            • CachingTokenFilter.cs.svn-base
            • CharArraySet.cs.svn-base
            • CharTokenizer.cs.svn-base
            • ISOLatin1AccentFilter.cs.svn-base
            • KeywordAnalyzer.cs.svn-base
            • KeywordTokenizer.cs.svn-base
            • LengthFilter.cs.svn-base
            • LetterTokenizer.cs.svn-base
            • LowerCaseFilter.cs.svn-base
            • LowerCaseTokenizer.cs.svn-base
            • Package.html.svn-base
            • PerFieldAnalyzerWrapper.cs.svn-base
            • PorterStemFilter.cs.svn-base
            • PorterStemmer.cs.svn-base
            • SimpleAnalyzer.cs.svn-base
            • SinkTokenizer.cs.svn-base
            • StopAnalyzer.cs.svn-base
            • StopFilter.cs.svn-base
            • TeeTokenFilter.cs.svn-base
            • Token.cs.svn-base
            • TokenFilter.cs.svn-base
            • Tokenizer.cs.svn-base
            • TokenStream.cs.svn-base
            • WhitespaceAnalyzer.cs.svn-base
            • WhitespaceTokenizer.cs.svn-base
            • WordlistLoader.cs.svn-base
          • props
            • Analyzer.cs.svn-work
            • CachingTokenFilter.cs.svn-work
            • CharArraySet.cs.svn-work
            • CharTokenizer.cs.svn-work
            • ISOLatin1AccentFilter.cs.svn-work
            • KeywordAnalyzer.cs.svn-work
            • KeywordTokenizer.cs.svn-work
            • LengthFilter.cs.svn-work
            • LetterTokenizer.cs.svn-work
            • LowerCaseFilter.cs.svn-work
            • LowerCaseTokenizer.cs.svn-work
            • Package.html.svn-work
            • PerFieldAnalyzerWrapper.cs.svn-work
            • PorterStemFilter.cs.svn-work
            • PorterStemmer.cs.svn-work
            • SimpleAnalyzer.cs.svn-work
            • SinkTokenizer.cs.svn-work
            • StopAnalyzer.cs.svn-work
            • StopFilter.cs.svn-work
            • TeeTokenFilter.cs.svn-work
            • Token.cs.svn-work
            • TokenFilter.cs.svn-work
            • Tokenizer.cs.svn-work
            • TokenStream.cs.svn-work
            • WhitespaceAnalyzer.cs.svn-work
            • WhitespaceTokenizer.cs.svn-work
            • WordlistLoader.cs.svn-work
          • README.txt
          • text-base
            • Analyzer.cs.svn-base
            • CachingTokenFilter.cs.svn-base
            • CharArraySet.cs.svn-base
            • CharTokenizer.cs.svn-base
            • ISOLatin1AccentFilter.cs.svn-base
            • KeywordAnalyzer.cs.svn-base
            • KeywordTokenizer.cs.svn-base
            • LengthFilter.cs.svn-base
            • LetterTokenizer.cs.svn-base
            • LowerCaseFilter.cs.svn-base
            • LowerCaseTokenizer.cs.svn-base
            • Package.html.svn-base
            • PerFieldAnalyzerWrapper.cs.svn-base
            • PorterStemFilter.cs.svn-base
            • PorterStemmer.cs.svn-base
            • SimpleAnalyzer.cs.svn-base
            • SinkTokenizer.cs.svn-base
            • StopAnalyzer.cs.svn-base
            • StopFilter.cs.svn-base
            • TeeTokenFilter.cs.svn-base
            • Token.cs.svn-base
            • TokenFilter.cs.svn-base
            • Tokenizer.cs.svn-base
            • TokenStream.cs.svn-base
            • WhitespaceAnalyzer.cs.svn-base
            • WhitespaceTokenizer.cs.svn-base
            • WordlistLoader.cs.svn-base
          • tmp
            • prop-base
            • props
            • text-base
            • wcprops
          • wcprops
            • Analyzer.cs.svn-work
            • CachingTokenFilter.cs.svn-work
            • CharArraySet.cs.svn-work
            • CharTokenizer.cs.svn-work
            • ISOLatin1AccentFilter.cs.svn-work
            • KeywordAnalyzer.cs.svn-work
            • KeywordTokenizer.cs.svn-work
            • LengthFilter.cs.svn-work
            • LetterTokenizer.cs.svn-work
            • LowerCaseFilter.cs.svn-work
            • LowerCaseTokenizer.cs.svn-work
            • Package.html.svn-work
            • PerFieldAnalyzerWrapper.cs.svn-work
            • PorterStemFilter.cs.svn-work
            • PorterStemmer.cs.svn-work
            • SimpleAnalyzer.cs.svn-work
            • SinkTokenizer.cs.svn-work
            • StopAnalyzer.cs.svn-work
            • StopFilter.cs.svn-work
            • TeeTokenFilter.cs.svn-work
            • Token.cs.svn-work
            • TokenFilter.cs.svn-work
            • Tokenizer.cs.svn-work
            • TokenStream.cs.svn-work
            • WhitespaceAnalyzer.cs.svn-work
            • WhitespaceTokenizer.cs.svn-work
            • WordlistLoader.cs.svn-work
        • Analyzer.cs
        • CachingTokenFilter.cs
        • CharArraySet.cs
        • CharTokenizer.cs
        • ISOLatin1AccentFilter.cs
        • KeywordAnalyzer.cs
        • KeywordTokenizer.cs
        • LengthFilter.cs
        • LetterTokenizer.cs
        • LowerCaseFilter.cs
        • LowerCaseTokenizer.cs
        • Package.html
        • PerFieldAnalyzerWrapper.cs
        • PorterStemFilter.cs
        • PorterStemmer.cs
        • SimpleAnalyzer.cs
        • SinkTokenizer.cs
        • Standard
          • .svn
            • dir-wcprops
            • empty-file
            • entries
            • format
            • prop-base
              • Package.html.svn-base
              • StandardAnalyzer.cs.svn-base
              • StandardFilter.cs.svn-base
              • StandardTokenizer.cs.svn-base
              • StandardTokenizer.jj.svn-base
              • StandardTokenizerImpl.cs.svn-base
              • StandardTokenizerImpl.jflex.svn-base
              • TokenMgrError.cs.svn-base
            • props
              • Package.html.svn-work
              • StandardAnalyzer.cs.svn-work
              • StandardFilter.cs.svn-work
              • StandardTokenizer.cs.svn-work
              • StandardTokenizer.jj.svn-work
              • StandardTokenizerImpl.cs.svn-work
              • StandardTokenizerImpl.jflex.svn-work
              • TokenMgrError.cs.svn-work
            • README.txt
            • text-base
              • Package.html.svn-base
              • StandardAnalyzer.cs.svn-base
              • StandardFilter.cs.svn-base
              • StandardTokenizer.cs.svn-base
              • StandardTokenizer.jj.svn-base
              • StandardTokenizerImpl.cs.svn-base
              • StandardTokenizerImpl.jflex.svn-base
              • TokenMgrError.cs.svn-base
            • tmp
              • prop-base
              • props
              • text-base
              • wcprops
            • wcprops
              • Package.html.svn-work
              • StandardAnalyzer.cs.svn-work
              • StandardFilter.cs.svn-work
              • StandardTokenizer.cs.svn-work
              • StandardTokenizer.jj.svn-work
              • StandardTokenizerImpl.cs.svn-work
              • StandardTokenizerImpl.jflex.svn-work
              • TokenMgrError.cs.svn-work
          • Package.html
          • StandardAnalyzer.cs
          • StandardFilter.cs
          • StandardTokenizer.cs
          • StandardTokenizer.jj
          • StandardTokenizerImpl.cs
          • StandardTokenizerImpl.jflex
          • TokenMgrError.cs
        • StopAnalyzer.cs
        • StopFilter.cs
        • TeeTokenFilter.cs
        • Token.cs
        • TokenFilter.cs
        • Tokenizer.cs
        • TokenStream.cs
        • WhitespaceAnalyzer.cs
        • WhitespaceTokenizer.cs
        • WordlistLoader.cs
      • AssemblyInfo.cs
      • bin
        • Debug
          • Lucene.Net.dll
          • Lucene.Net.pdb
      • deneme.pfx
      • Document
        • .svn
          • dir-wcprops
          • empty-file
          • entries
          • format
          • prop-base
            • AbstractField.cs.svn-base
            • DateField.cs.svn-base
            • DateTools.cs.svn-base
            • Document.cs.svn-base
            • Field.cs.svn-base
            • Fieldable.cs.svn-base
            • FieldSelector.cs.svn-base
            • FieldSelectorResult.cs.svn-base
            • LoadFirstFieldSelector.cs.svn-base
            • MapFieldSelector.cs.svn-base
            • NumberTools.cs.svn-base
            • Package.html.svn-base
            • SetBasedFieldSelector.cs.svn-base
          • props
            • AbstractField.cs.svn-work
            • DateField.cs.svn-work
            • DateTools.cs.svn-work
            • Document.cs.svn-work
            • Field.cs.svn-work
            • Fieldable.cs.svn-work
            • FieldSelector.cs.svn-work
            • FieldSelectorResult.cs.svn-work
            • LoadFirstFieldSelector.cs.svn-work
            • MapFieldSelector.cs.svn-work
            • NumberTools.cs.svn-work
            • Package.html.svn-work
            • SetBasedFieldSelector.cs.svn-work
          • README.txt
          • text-base
            • AbstractField.cs.svn-base
            • DateField.cs.svn-base
            • DateTools.cs.svn-base
            • Document.cs.svn-base
            • Field.cs.svn-base
            • Fieldable.cs.svn-base
            • FieldSelector.cs.svn-base
            • FieldSelectorResult.cs.svn-base
            • LoadFirstFieldSelector.cs.svn-base
            • MapFieldSelector.cs.svn-base
            • NumberTools.cs.svn-base
            • Package.html.svn-base
            • SetBasedFieldSelector.cs.svn-base
          • tmp
            • prop-base
            • props
            • text-base
            • wcprops
          • wcprops
            • AbstractField.cs.svn-work
            • DateField.cs.svn-work
            • DateTools.cs.svn-work
            • Document.cs.svn-work
            • Field.cs.svn-work
            • Fieldable.cs.svn-work
            • FieldSelector.cs.svn-work
            • FieldSelectorResult.cs.svn-work
            • LoadFirstFieldSelector.cs.svn-work
            • MapFieldSelector.cs.svn-work
            • NumberTools.cs.svn-work
            • Package.html.svn-work
            • SetBasedFieldSelector.cs.svn-work
        • AbstractField.cs
        • DateField.cs
        • DateTools.cs
        • Document.cs
        • Field.cs
        • Fieldable.cs
        • FieldSelector.cs
        • FieldSelectorResult.cs
        • LoadFirstFieldSelector.cs
        • MapFieldSelector.cs
        • NumberTools.cs
        • Package.html
        • SetBasedFieldSelector.cs
      • Index
        • .svn
          • dir-wcprops
          • empty-file
          • entries
          • format
          • prop-base
            • CheckIndex.cs.svn-base
            • CompoundFileReader.cs.svn-base
            • CompoundFileWriter.cs.svn-base
            • ConcurrentMergeScheduler.cs.svn-base
            • CorruptIndexException.cs.svn-base
            • DefaultSkipListReader.cs.svn-base
            • DefaultSkipListWriter.cs.svn-base
            • DirectoryIndexReader.cs.svn-base
            • DocumentsWriter.cs.svn-base
            • DocumentWriter.cs.svn-base
            • FieldInfo.cs.svn-base
            • FieldInfos.cs.svn-base
            • FieldReaderException.cs.svn-base
            • FieldSortedTermVectorMapper.cs.svn-base
            • FieldsReader.cs.svn-base
            • FieldsWriter.cs.svn-base
            • FilterIndexReader.cs.svn-base
            • IndexCommitPoint.cs.svn-base
            • IndexDeletionPolicy.cs.svn-base
            • IndexFileDeleter.cs.svn-base
            • IndexFileNameFilter.cs.svn-base
            • IndexFileNames.cs.svn-base
            • IndexModifier.cs.svn-base
            • IndexReader.cs.svn-base
            • IndexWriter.cs.svn-base
            • KeepOnlyLastCommitDeletionPolicy.cs.svn-base
            • LogByteSizeMergePolicy.cs.svn-base
            • LogDocMergePolicy.cs.svn-base
            • LogMergePolicy.cs.svn-base
            • MergePolicy.cs.svn-base
            • MergeScheduler.cs.svn-base
            • MultiLevelSkipListReader.cs.svn-base
            • MultiLevelSkipListWriter.cs.svn-base
            • MultipleTermPositions.cs.svn-base
            • MultiReader.cs.svn-base
            • MultiSegmentReader.cs.svn-base
            • Package.html.svn-base
            • ParallelReader.cs.svn-base
            • Payload.cs.svn-base
            • PositionBasedTermVectorMapper.cs.svn-base
            • SegmentInfo.cs.svn-base
            • SegmentInfos.cs.svn-base
            • SegmentMergeInfo.cs.svn-base
            • SegmentMergeQueue.cs.svn-base
            • SegmentMerger.cs.svn-base
            • SegmentReade-2r.cs.svn-base
            • SegmentReader.cs.svn-base
            • SegmentTermDocs.cs.svn-base
            • SegmentTermEnum.cs.svn-base
            • SegmentTermPositions.cs.svn-base
            • SegmentTermPositionVector.cs.svn-base
            • SegmentTermVector.cs.svn-base
            • SerialMergeScheduler.cs.svn-base
            • SnapshotDeletionPolicy.cs.svn-base
            • SortedTermVectorMapper.cs.svn-base
            • StaleReaderException.cs.svn-base
            • Term.cs.svn-base
            • TermBuffer.cs.svn-base
            • TermDocs.cs.svn-base
            • TermEnum.cs.svn-base
            • TermFreqVector.cs.svn-base
            • TermInfo.cs.svn-base
            • TermInfosReader.cs.svn-base
            • TermInfosWriter.cs.svn-base
            • TermPositions.cs.svn-base
            • TermPositionVector.cs.svn-base
            • TermVectorEntry.cs.svn-base
            • TermVectorEntryFreqSortedComparator.cs.svn-base
            • TermVectorMapper.cs.svn-base
            • TermVectorOffsetInfo.cs.svn-base
            • TermVectorsReader.cs.svn-base
            • TermVectorsWriter.cs.svn-base
          • props
            • CheckIndex.cs.svn-work
            • CompoundFileReader.cs.svn-work
            • CompoundFileWriter.cs.svn-work
            • ConcurrentMergeScheduler.cs.svn-work
            • CorruptIndexException.cs.svn-work
            • DefaultSkipListReader.cs.svn-work
            • DefaultSkipListWriter.cs.svn-work
            • DirectoryIndexReader.cs.svn-work
            • DocumentsWriter.cs.svn-work
            • DocumentWriter.cs.svn-work
            • FieldInfo.cs.svn-work
            • FieldInfos.cs.svn-work
            • FieldReaderException.cs.svn-work
            • FieldSortedTermVectorMapper.cs.svn-work
            • FieldsReader.cs.svn-work
            • FieldsWriter.cs.svn-work
            • FilterIndexReader.cs.svn-work
            • IndexCommitPoint.cs.svn-work
            • IndexDeletionPolicy.cs.svn-work
            • IndexFileDeleter.cs.svn-work
            • IndexFileNameFilter.cs.svn-work
            • IndexFileNames.cs.svn-work
            • IndexModifier.cs.svn-work
            • IndexReader.cs.svn-work
            • IndexWriter.cs.svn-work
            • KeepOnlyLastCommitDeletionPolicy.cs.svn-work
            • LogByteSizeMergePolicy.cs.svn-work
            • LogDocMergePolicy.cs.svn-work
            • LogMergePolicy.cs.svn-work
            • MergePolicy.cs.svn-work
            • MergeScheduler.cs.svn-work
            • MultiLevelSkipListReader.cs.svn-work
            • MultiLevelSkipListWriter.cs.svn-work
            • MultipleTermPositions.cs.svn-work
            • MultiReader.cs.svn-work
            • MultiSegmentReader.cs.svn-work
            • Package.html.svn-work
            • ParallelReader.cs.svn-work
            • Payload.cs.svn-work
            • PositionBasedTermVectorMapper.cs.svn-work
            • SegmentInfo.cs.svn-work
            • SegmentInfos.cs.svn-work
            • SegmentMergeInfo.cs.svn-work
            • SegmentMergeQueue.cs.svn-work
            • SegmentMerger.cs.svn-work
            • SegmentReade-2r.cs.svn-work
            • SegmentReader.cs.svn-work
            • SegmentTermDocs.cs.svn-work
            • SegmentTermEnum.cs.svn-work
            • SegmentTermPositions.cs.svn-work
            • SegmentTermPositionVector.cs.svn-work
            • SegmentTermVector.cs.svn-work
            • SerialMergeScheduler.cs.svn-work
            • SnapshotDeletionPolicy.cs.svn-work
            • SortedTermVectorMapper.cs.svn-work
            • StaleReaderException.cs.svn-work
            • Term.cs.svn-work
            • TermBuffer.cs.svn-work
            • TermDocs.cs.svn-work
            • TermEnum.cs.svn-work
            • TermFreqVector.cs.svn-work
            • TermInfo.cs.svn-work
            • TermInfosReader.cs.svn-work
            • TermInfosWriter.cs.svn-work
            • TermPositions.cs.svn-work
            • TermPositionVector.cs.svn-work
            • TermVectorEntry.cs.svn-work
            • TermVectorEntryFreqSortedComparator.cs.svn-work
            • TermVectorMapper.cs.svn-work
            • TermVectorOffsetInfo.cs.svn-work
            • TermVectorsReader.cs.svn-work
            • TermVectorsWriter.cs.svn-work
          • README.txt
          • text-base
            • CheckIndex.cs.svn-base
            • CompoundFileReader.cs.svn-base
            • CompoundFileWriter.cs.svn-base
            • ConcurrentMergeScheduler.cs.svn-base
            • CorruptIndexException.cs.svn-base
            • DefaultSkipListReader.cs.svn-base
            • DefaultSkipListWriter.cs.svn-base
            • DirectoryIndexReader.cs.svn-base
            • DocumentsWriter.cs.svn-base
            • DocumentWriter.cs.svn-base
            • FieldInfo.cs.svn-base
            • FieldInfos.cs.svn-base
            • FieldReaderException.cs.svn-base
            • FieldSortedTermVectorMapper.cs.svn-base
            • FieldsReader.cs.svn-base
            • FieldsWriter.cs.svn-base
            • FilterIndexReader.cs.svn-base
            • IndexCommitPoint.cs.svn-base
            • IndexDeletionPolicy.cs.svn-base
            • IndexFileDeleter.cs.svn-base
            • IndexFileNameFilter.cs.svn-base
            • IndexFileNames.cs.svn-base
            • IndexModifier.cs.svn-base
            • IndexReader.cs.svn-base
            • IndexWriter.cs.svn-base
            • KeepOnlyLastCommitDeletionPolicy.cs.svn-base
            • LogByteSizeMergePolicy.cs.svn-base
            • LogDocMergePolicy.cs.svn-base
            • LogMergePolicy.cs.svn-base
            • MergePolicy.cs.svn-base
            • MergeScheduler.cs.svn-base
            • MultiLevelSkipListReader.cs.svn-base
            • MultiLevelSkipListWriter.cs.svn-base
            • MultipleTermPositions.cs.svn-base
            • MultiReader.cs.svn-base
            • MultiSegmentReader.cs.svn-base
            • Package.html.svn-base
            • ParallelReader.cs.svn-base
            • Payload.cs.svn-base
            • PositionBasedTermVectorMapper.cs.svn-base
            • SegmentInfo.cs.svn-base
            • SegmentInfos.cs.svn-base
            • SegmentMergeInfo.cs.svn-base
            • SegmentMergeQueue.cs.svn-base
            • SegmentMerger.cs.svn-base
            • SegmentReade-2r.cs.svn-base
            • SegmentReader.cs.svn-base
            • SegmentTermDocs.cs.svn-base
            • SegmentTermEnum.cs.svn-base
            • SegmentTermPositions.cs.svn-base
            • SegmentTermPositionVector.cs.svn-base
            • SegmentTermVector.cs.svn-base
            • SerialMergeScheduler.cs.svn-base
            • SnapshotDeletionPolicy.cs.svn-base
            • SortedTermVectorMapper.cs.svn-base
            • StaleReaderException.cs.svn-base
            • Term.cs.svn-base
            • TermBuffer.cs.svn-base
            • TermDocs.cs.svn-base
            • TermEnum.cs.svn-base
            • TermFreqVector.cs.svn-base
            • TermInfo.cs.svn-base
            • TermInfosReader.cs.svn-base
            • TermInfosWriter.cs.svn-base
            • TermPositions.cs.svn-base
            • TermPositionVector.cs.svn-base
            • TermVectorEntry.cs.svn-base
            • TermVectorEntryFreqSortedComparator.cs.svn-base
            • TermVectorMapper.cs.svn-base
            • TermVectorOffsetInfo.cs.svn-base
            • TermVectorsReader.cs.svn-base
            • TermVectorsWriter.cs.svn-base
          • tmp
            • prop-base
            • props
            • text-base
            • wcprops
          • wcprops
            • CheckIndex.cs.svn-work
            • CompoundFileReader.cs.svn-work
            • CompoundFileWriter.cs.svn-work
            • ConcurrentMergeScheduler.cs.svn-work
            • CorruptIndexException.cs.svn-work
            • DefaultSkipListReader.cs.svn-work
            • DefaultSkipListWriter.cs.svn-work
            • DirectoryIndexReader.cs.svn-work
            • DocumentsWriter.cs.svn-work
            • DocumentWriter.cs.svn-work
            • FieldInfo.cs.svn-work
            • FieldInfos.cs.svn-work
            • FieldReaderException.cs.svn-work
            • FieldSortedTermVectorMapper.cs.svn-work
            • FieldsReader.cs.svn-work
            • FieldsWriter.cs.svn-work
            • FilterIndexReader.cs.svn-work
            • IndexCommitPoint.cs.svn-work
            • IndexDeletionPolicy.cs.svn-work
            • IndexFileDeleter.cs.svn-work
            • IndexFileNameFilter.cs.svn-work
            • IndexFileNames.cs.svn-work
            • IndexModifier.cs.svn-work
            • IndexReader.cs.svn-work
            • IndexWriter.cs.svn-work
            • KeepOnlyLastCommitDeletionPolicy.cs.svn-work
            • LogByteSizeMergePolicy.cs.svn-work
            • LogDocMergePolicy.cs.svn-work
            • LogMergePolicy.cs.svn-work
            • MergePolicy.cs.svn-work
            • MergeScheduler.cs.svn-work
            • MultiLevelSkipListReader.cs.svn-work
            • MultiLevelSkipListWriter.cs.svn-work
            • MultipleTermPositions.cs.svn-work
            • MultiReader.cs.svn-work
            • MultiSegmentReader.cs.svn-work
            • Package.html.svn-work
            • ParallelReader.cs.svn-work
            • Payload.cs.svn-work
            • PositionBasedTermVectorMapper.cs.svn-work
            • SegmentInfo.cs.svn-work
            • SegmentInfos.cs.svn-work
            • SegmentMergeInfo.cs.svn-work
            • SegmentMergeQueue.cs.svn-work
            • SegmentMerger.cs.svn-work
            • SegmentReade-2r.cs.svn-work
            • SegmentReader.cs.svn-work
            • SegmentTermDocs.cs.svn-work
            • SegmentTermEnum.cs.svn-work
            • SegmentTermPositions.cs.svn-work
            • SegmentTermPositionVector.cs.svn-work
            • SegmentTermVector.cs.svn-work
            • SerialMergeScheduler.cs.svn-work
            • SnapshotDeletionPolicy.cs.svn-work
            • SortedTermVectorMapper.cs.svn-work
            • StaleReaderException.cs.svn-work
            • Term.cs.svn-work
            • TermBuffer.cs.svn-work
            • TermDocs.cs.svn-work
            • TermEnum.cs.svn-work
            • TermFreqVector.cs.svn-work
            • TermInfo.cs.svn-work
            • TermInfosReader.cs.svn-work
            • TermInfosWriter.cs.svn-work
            • TermPositions.cs.svn-work
            • TermPositionVector.cs.svn-work
            • TermVectorEntry.cs.svn-work
            • TermVectorEntryFreqSortedComparator.cs.svn-work
            • TermVectorMapper.cs.svn-work
            • TermVectorOffsetInfo.cs.svn-work
            • TermVectorsReader.cs.svn-work
            • TermVectorsWriter.cs.svn-work
        • CheckIndex.cs
        • CompoundFileReader.cs
        • CompoundFileWriter.cs
        • ConcurrentMergeScheduler.cs
        • CorruptIndexException.cs
        • DefaultSkipListReader.cs
        • DefaultSkipListWriter.cs
        • DirectoryIndexReader.cs
        • DocumentsWriter.cs
        • DocumentWriter.cs
        • FieldInfo.cs
        • FieldInfos.cs
        • FieldReaderException.cs
        • FieldSortedTermVectorMapper.cs
        • FieldsReader.cs
        • FieldsWriter.cs
        • FilterIndexReader.cs
        • IndexCommitPoint.cs
        • IndexDeletionPolicy.cs
        • IndexFileDeleter.cs
        • IndexFileNameFilter.cs
        • IndexFileNames.cs
        • IndexModifier.cs
        • IndexReader.cs
        • IndexWriter.cs
        • KeepOnlyLastCommitDeletionPolicy.cs
        • LogByteSizeMergePolicy.cs
        • LogDocMergePolicy.cs
        • LogMergePolicy.cs
        • MergePolicy.cs
        • MergeScheduler.cs
        • MultiLevelSkipListReader.cs
        • MultiLevelSkipListWriter.cs
        • MultipleTermPositions.cs
        • MultiReader.cs
        • MultiSegmentReader.cs
        • Package.html
        • ParallelReader.cs
        • Payload.cs
        • PositionBasedTermVectorMapper.cs
        • SegmentInfo.cs
        • SegmentInfos.cs
        • SegmentMergeInfo.cs
        • SegmentMergeQueue.cs
        • SegmentMerger.cs
        • SegmentReade-2r.cs
        • SegmentReader.cs
        • SegmentTermDocs.cs
        • SegmentTermEnum.cs
        • SegmentTermPositions.cs
        • SegmentTermPositionVector.cs
        • SegmentTermVector.cs
        • SerialMergeScheduler.cs
        • SnapshotDeletionPolicy.cs
        • SortedTermVectorMapper.cs
        • StaleReaderException.cs
        • Term.cs
        • TermBuffer.cs
        • TermDocs.cs
        • TermEnum.cs
        • TermFreqVector.cs
        • TermInfo.cs
        • TermInfosReader.cs
        • TermInfosWriter.cs
        • TermPositions.cs
        • TermPositionVector.cs
        • TermVectorEntry.cs
        • TermVectorEntryFreqSortedComparator.cs
        • TermVectorMapper.cs
        • TermVectorOffsetInfo.cs
        • TermVectorsReader.cs
        • TermVectorsWriter.cs
      • Lucene.Net.Search.RemoteSearchable.config
      • Lucene.Net.Search.TestSort.config
      • Lucene.Net.sln
      • Lucene.Net.xml
      • Lucene.Net-2.3.1.ndoc
      • Lucene.Net-2.3.1-VS2005.csproj
      • Lucene.Net-2.3.1-VS2005.sln
      • Lucene.Net-2.3.1-VS2005.suo
      • LucenePackage.cs
      • obj
      • Overview.html
      • Package.html
      • QueryParser
        • .svn
          • dir-wcprops
          • empty-file
          • entries
          • format
          • prop-base
            • CharStream.cs.svn-base
            • FastCharStream.cs.svn-base
            • MultiFieldQueryParser.cs.svn-base
            • Package.html.svn-base
            • ParseException.cs.svn-base
            • QueryParser.cs.svn-base
            • QueryParser.JJ.svn-base
            • QueryParserConstants.cs.svn-base
            • QueryParserTokenManager.cs.svn-base
            • Token.cs.svn-base
            • TokenMgrError.cs.svn-base
          • props
            • CharStream.cs.svn-work
            • FastCharStream.cs.svn-work
            • MultiFieldQueryParser.cs.svn-work
            • Package.html.svn-work
            • ParseException.cs.svn-work
            • QueryParser.cs.svn-work
            • QueryParser.JJ.svn-work
            • QueryParserConstants.cs.svn-work
            • QueryParserTokenManager.cs.svn-work
            • Token.cs.svn-work
            • TokenMgrError.cs.svn-work
          • README.txt
          • text-base
            • CharStream.cs.svn-base
            • FastCharStream.cs.svn-base
            • MultiFieldQueryParser.cs.svn-base
            • Package.html.svn-base
            • ParseException.cs.svn-base
            • QueryParser.cs.svn-base
            • QueryParser.JJ.svn-base
            • QueryParserConstants.cs.svn-base
            • QueryParserTokenManager.cs.svn-base
            • Token.cs.svn-base
            • TokenMgrError.cs.svn-base
          • tmp
            • prop-base
            • props
            • text-base
            • wcprops
          • wcprops
            • CharStream.cs.svn-work
            • FastCharStream.cs.svn-work
            • MultiFieldQueryParser.cs.svn-work
            • Package.html.svn-work
            • ParseException.cs.svn-work
            • QueryParser.cs.svn-work
            • QueryParser.JJ.svn-work
            • QueryParserConstants.cs.svn-work
            • QueryParserTokenManager.cs.svn-work
            • Token.cs.svn-work
            • TokenMgrError.cs.svn-work
        • CharStream.cs
        • FastCharStream.cs
        • MultiFieldQueryParser.cs
        • Package.html
        • ParseException.cs
        • QueryParser.cs
        • QueryParser.JJ
        • QueryParserConstants.cs
        • QueryParserTokenManager.cs
        • Token.cs
        • TokenMgrError.cs
      • Search
        • .svn
          • dir-wcprops
          • empty-file
          • entries
          • format
          • prop-base
            • BooleanClause.cs.svn-base
            • BooleanQuery.cs.svn-base
            • BooleanScorer.cs.svn-base
            • BooleanScorer2.cs.svn-base
            • CachingSpanFilter.cs.svn-base
            • CachingWrapperFilter.cs.svn-base
            • ComplexExplanation.cs.svn-base
            • ConjunctionScorer.cs.svn-base
            • ConstantScoreQuery.cs.svn-base
            • ConstantScoreRangeQuery.cs.svn-base
            • DefaultSimilarity.cs.svn-base
            • DisjunctionMaxQuery.cs.svn-base
            • DisjunctionMaxScorer.cs.svn-base
            • DisjunctionSumScorer.cs.svn-base
            • ExactPhraseScorer.cs.svn-base
            • Explanation.cs.svn-base
            • ExtendedFieldCache.cs.svn-base
            • ExtendedFieldCacheImpl.cs.svn-base
            • FieldCache.cs.svn-base
            • FieldCacheImpl.cs.svn-base
            • FieldDoc.cs.svn-base
            • FieldDocSortedHitQueue.cs.svn-base
            • FieldSortedHitQueue.cs.svn-base
            • Filter.cs.svn-base
            • FilteredQuery.cs.svn-base
            • FilteredTermEnum.cs.svn-base
            • FilterManager.cs.svn-base
            • FuzzyQuery.cs.svn-base
            • FuzzyTermEnum.cs.svn-base
            • Hit.cs.svn-base
            • HitCollector.cs.svn-base
            • HitIterator.cs.svn-base
            • HitQueue.cs.svn-base
            • Hits.cs.svn-base
            • IndexSearcher.cs.svn-base
            • MatchAllDocsQuery.cs.svn-base
            • MultiPhraseQuery.cs.svn-base
            • MultiSearcher.cs.svn-base
            • MultiTermQuery.cs.svn-base
            • NonMatchingScorer.cs.svn-base
            • Package.html.svn-base
            • ParallelMultiSearcher.cs.svn-base
            • PhrasePositions.cs.svn-base
            • PhraseQuery.cs.svn-base
            • PhraseQueue.cs.svn-base
            • PhraseScorer.cs.svn-base
            • PrefixFilter.cs.svn-base
            • PrefixQuery.cs.svn-base
            • Query.cs.svn-base
            • QueryFilter.cs.svn-base
            • QueryTermVector.cs.svn-base
            • QueryWrapperFilter.cs.svn-base
            • RangeFilter.cs.svn-base
            • RangeQuery.cs.svn-base
            • RemoteCachingWrapperFilter.cs.svn-base
            • RemoteSearchable.cs.svn-base
            • ReqExclScorer.cs.svn-base
            • ReqOptSumScorer.cs.svn-base
            • ScoreDoc.cs.svn-base
            • ScoreDocComparator.cs.svn-base
            • Scorer.cs.svn-base
            • Searchable.cs.svn-base
            • Searcher.cs.svn-base
            • Similarity.cs.svn-base
            • SimilarityDelegator.cs.svn-base
            • SloppyPhraseScorer.cs.svn-base
            • Sort.cs.svn-base
            • SortComparator.cs.svn-base
            • SortComparatorSource.cs.svn-base
            • SortField.cs.svn-base
            • SpanFilter.cs.svn-base
            • SpanFilterResult.cs.svn-base
            • SpanQueryFilter.cs.svn-base
            • TermQuery.cs.svn-base
            • TermScorer.cs.svn-base
            • TopDocCollector.cs.svn-base
            • TopDocs.cs.svn-base
            • TopFieldDocCollector.cs.svn-base
            • TopFieldDocs.cs.svn-base
            • Weight.cs.svn-base
            • WildcardQuery.cs.svn-base
            • WildcardTermEnum.cs.svn-base
          • props
            • BooleanClause.cs.svn-work
            • BooleanQuery.cs.svn-work
            • BooleanScorer.cs.svn-work
            • BooleanScorer2.cs.svn-work
            • CachingSpanFilter.cs.svn-work
            • CachingWrapperFilter.cs.svn-work
            • ComplexExplanation.cs.svn-work
            • ConjunctionScorer.cs.svn-work
            • ConstantScoreQuery.cs.svn-work
            • ConstantScoreRangeQuery.cs.svn-work
            • DefaultSimilarity.cs.svn-work
            • DisjunctionMaxQuery.cs.svn-work
            • DisjunctionMaxScorer.cs.svn-work
            • DisjunctionSumScorer.cs.svn-work
            • ExactPhraseScorer.cs.svn-work
            • Explanation.cs.svn-work
            • ExtendedFieldCache.cs.svn-work
            • ExtendedFieldCacheImpl.cs.svn-work
            • FieldCache.cs.svn-work
            • FieldCacheImpl.cs.svn-work
            • FieldDoc.cs.svn-work
            • FieldDocSortedHitQueue.cs.svn-work
            • FieldSortedHitQueue.cs.svn-work
            • Filter.cs.svn-work
            • FilteredQuery.cs.svn-work
            • FilteredTermEnum.cs.svn-work
            • FilterManager.cs.svn-work
            • FuzzyQuery.cs.svn-work
            • FuzzyTermEnum.cs.svn-work
            • Hit.cs.svn-work
            • HitCollector.cs.svn-work
            • HitIterator.cs.svn-work
            • HitQueue.cs.svn-work
            • Hits.cs.svn-work
            • IndexSearcher.cs.svn-work
            • MatchAllDocsQuery.cs.svn-work
            • MultiPhraseQuery.cs.svn-work
            • MultiSearcher.cs.svn-work
            • MultiTermQuery.cs.svn-work
            • NonMatchingScorer.cs.svn-work
            • Package.html.svn-work
            • ParallelMultiSearcher.cs.svn-work
            • PhrasePositions.cs.svn-work
            • PhraseQuery.cs.svn-work
            • PhraseQueue.cs.svn-work
            • PhraseScorer.cs.svn-work
            • PrefixFilter.cs.svn-work
            • PrefixQuery.cs.svn-work
            • Query.cs.svn-work
            • QueryFilter.cs.svn-work
            • QueryTermVector.cs.svn-work
            • QueryWrapperFilter.cs.svn-work
            • RangeFilter.cs.svn-work
            • RangeQuery.cs.svn-work
            • RemoteCachingWrapperFilter.cs.svn-work
            • RemoteSearchable.cs.svn-work
            • ReqExclScorer.cs.svn-work
            • ReqOptSumScorer.cs.svn-work
            • ScoreDoc.cs.svn-work
            • ScoreDocComparator.cs.svn-work
            • Scorer.cs.svn-work
            • Searchable.cs.svn-work
            • Searcher.cs.svn-work
            • Similarity.cs.svn-work
            • SimilarityDelegator.cs.svn-work
            • SloppyPhraseScorer.cs.svn-work
            • Sort.cs.svn-work
            • SortComparator.cs.svn-work
            • SortComparatorSource.cs.svn-work
            • SortField.cs.svn-work
            • SpanFilter.cs.svn-work
            • SpanFilterResult.cs.svn-work
            • SpanQueryFilter.cs.svn-work
            • TermQuery.cs.svn-work
            • TermScorer.cs.svn-work
            • TopDocCollector.cs.svn-work
            • TopDocs.cs.svn-work
            • TopFieldDocCollector.cs.svn-work
            • TopFieldDocs.cs.svn-work
            • Weight.cs.svn-work
            • WildcardQuery.cs.svn-work
            • WildcardTermEnum.cs.svn-work
          • README.txt
          • text-base
            • BooleanClause.cs.svn-base
            • BooleanQuery.cs.svn-base
            • BooleanScorer.cs.svn-base
            • BooleanScorer2.cs.svn-base
            • CachingSpanFilter.cs.svn-base
            • CachingWrapperFilter.cs.svn-base
            • ComplexExplanation.cs.svn-base
            • ConjunctionScorer.cs.svn-base
            • ConstantScoreQuery.cs.svn-base
            • ConstantScoreRangeQuery.cs.svn-base
            • DefaultSimilarity.cs.svn-base
            • DisjunctionMaxQuery.cs.svn-base
            • DisjunctionMaxScorer.cs.svn-base
            • DisjunctionSumScorer.cs.svn-base
            • ExactPhraseScorer.cs.svn-base
            • Explanation.cs.svn-base
            • ExtendedFieldCache.cs.svn-base
            • ExtendedFieldCacheImpl.cs.svn-base
            • FieldCache.cs.svn-base
            • FieldCacheImpl.cs.svn-base
            • FieldDoc.cs.svn-base
            • FieldDocSortedHitQueue.cs.svn-base
            • FieldSortedHitQueue.cs.svn-base
            • Filter.cs.svn-base
            • FilteredQuery.cs.svn-base
            • FilteredTermEnum.cs.svn-base
            • FilterManager.cs.svn-base
            • FuzzyQuery.cs.svn-base
            • FuzzyTermEnum.cs.svn-base
            • Hit.cs.svn-base
            • HitCollector.cs.svn-base
            • HitIterator.cs.svn-base
            • HitQueue.cs.svn-base
            • Hits.cs.svn-base
            • IndexSearcher.cs.svn-base
            • MatchAllDocsQuery.cs.svn-base
            • MultiPhraseQuery.cs.svn-base
            • MultiSearcher.cs.svn-base
            • MultiTermQuery.cs.svn-base
            • NonMatchingScorer.cs.svn-base
            • Package.html.svn-base
            • ParallelMultiSearcher.cs.svn-base
            • PhrasePositions.cs.svn-base
            • PhraseQuery.cs.svn-base
            • PhraseQueue.cs.svn-base
            • PhraseScorer.cs.svn-base
            • PrefixFilter.cs.svn-base
            • PrefixQuery.cs.svn-base
            • Query.cs.svn-base
            • QueryFilter.cs.svn-base
            • QueryTermVector.cs.svn-base
            • QueryWrapperFilter.cs.svn-base
            • RangeFilter.cs.svn-base
            • RangeQuery.cs.svn-base
            • RemoteCachingWrapperFilter.cs.svn-base
            • RemoteSearchable.cs.svn-base
            • ReqExclScorer.cs.svn-base
            • ReqOptSumScorer.cs.svn-base
            • ScoreDoc.cs.svn-base
            • ScoreDocComparator.cs.svn-base
            • Scorer.cs.svn-base
            • Searchable.cs.svn-base
            • Searcher.cs.svn-base
            • Similarity.cs.svn-base
            • SimilarityDelegator.cs.svn-base
            • SloppyPhraseScorer.cs.svn-base
            • Sort.cs.svn-base
            • SortComparator.cs.svn-base
            • SortComparatorSource.cs.svn-base
            • SortField.cs.svn-base
            • SpanFilter.cs.svn-base
            • SpanFilterResult.cs.svn-base
            • SpanQueryFilter.cs.svn-base
            • TermQuery.cs.svn-base
            • TermScorer.cs.svn-base
            • TopDocCollector.cs.svn-base
            • TopDocs.cs.svn-base
            • TopFieldDocCollector.cs.svn-base
            • TopFieldDocs.cs.svn-base
            • Weight.cs.svn-base
            • WildcardQuery.cs.svn-base
            • WildcardTermEnum.cs.svn-base
          • tmp
            • prop-base
            • props
            • text-base
            • wcprops
          • wcprops
            • BooleanClause.cs.svn-work
            • BooleanQuery.cs.svn-work
            • BooleanScorer.cs.svn-work
            • BooleanScorer2.cs.svn-work
            • CachingSpanFilter.cs.svn-work
            • CachingWrapperFilter.cs.svn-work
            • ComplexExplanation.cs.svn-work
            • ConjunctionScorer.cs.svn-work
            • ConstantScoreQuery.cs.svn-work
            • ConstantScoreRangeQuery.cs.svn-work
            • DefaultSimilarity.cs.svn-work
            • DisjunctionMaxQuery.cs.svn-work
            • DisjunctionMaxScorer.cs.svn-work
            • DisjunctionSumScorer.cs.svn-work
            • ExactPhraseScorer.cs.svn-work
            • Explanation.cs.svn-work
            • ExtendedFieldCache.cs.svn-work
            • ExtendedFieldCacheImpl.cs.svn-work
            • FieldCache.cs.svn-work
            • FieldCacheImpl.cs.svn-work
            • FieldDoc.cs.svn-work
            • FieldDocSortedHitQueue.cs.svn-work
            • FieldSortedHitQueue.cs.svn-work
            • Filter.cs.svn-work
            • FilteredQuery.cs.svn-work
            • FilteredTermEnum.cs.svn-work
            • FilterManager.cs.svn-work
            • FuzzyQuery.cs.svn-work
            • FuzzyTermEnum.cs.svn-work
            • Hit.cs.svn-work
            • HitCollector.cs.svn-work
            • HitIterator.cs.svn-work
            • HitQueue.cs.svn-work
            • Hits.cs.svn-work
            • IndexSearcher.cs.svn-work
            • MatchAllDocsQuery.cs.svn-work
            • MultiPhraseQuery.cs.svn-work
            • MultiSearcher.cs.svn-work
            • MultiTermQuery.cs.svn-work
            • NonMatchingScorer.cs.svn-work
            • Package.html.svn-work
            • ParallelMultiSearcher.cs.svn-work
            • PhrasePositions.cs.svn-work
            • PhraseQuery.cs.svn-work
            • PhraseQueue.cs.svn-work
            • PhraseScorer.cs.svn-work
            • PrefixFilter.cs.svn-work
            • PrefixQuery.cs.svn-work
            • Query.cs.svn-work
            • QueryFilter.cs.svn-work
            • QueryTermVector.cs.svn-work
            • QueryWrapperFilter.cs.svn-work
            • RangeFilter.cs.svn-work
            • RangeQuery.cs.svn-work
            • RemoteCachingWrapperFilter.cs.svn-work
            • RemoteSearchable.cs.svn-work
            • ReqExclScorer.cs.svn-work
            • ReqOptSumScorer.cs.svn-work
            • ScoreDoc.cs.svn-work
            • ScoreDocComparator.cs.svn-work
            • Scorer.cs.svn-work
            • Searchable.cs.svn-work
            • Searcher.cs.svn-work
            • Similarity.cs.svn-work
            • SimilarityDelegator.cs.svn-work
            • SloppyPhraseScorer.cs.svn-work
            • Sort.cs.svn-work
            • SortComparator.cs.svn-work
            • SortComparatorSource.cs.svn-work
            • SortField.cs.svn-work
            • SpanFilter.cs.svn-work
            • SpanFilterResult.cs.svn-work
            • SpanQueryFilter.cs.svn-work
            • TermQuery.cs.svn-work
            • TermScorer.cs.svn-work
            • TopDocCollector.cs.svn-work
            • TopDocs.cs.svn-work
            • TopFieldDocCollector.cs.svn-work
            • TopFieldDocs.cs.svn-work
            • Weight.cs.svn-work
            • WildcardQuery.cs.svn-work
            • WildcardTermEnum.cs.svn-work
        • BooleanClause.cs
        • BooleanQuery.cs
        • BooleanScorer.cs
        • BooleanScorer2.cs
        • CachingSpanFilter.cs
        • CachingWrapperFilter.cs
        • ComplexExplanation.cs
        • ConjunctionScorer.cs
        • ConstantScoreQuery.cs
        • ConstantScoreRangeQuery.cs
        • DefaultSimilarity.cs
        • DisjunctionMaxQuery.cs
        • DisjunctionMaxScorer.cs
        • DisjunctionSumScorer.cs
        • ExactPhraseScorer.cs
        • Explanation.cs
        • ExtendedFieldCache.cs
        • ExtendedFieldCacheImpl.cs
        • FieldCache.cs
        • FieldCacheImpl.cs
        • FieldDoc.cs
        • FieldDocSortedHitQueue.cs
        • FieldSortedHitQueue.cs
        • Filter.cs
        • FilteredQuery.cs
        • FilteredTermEnum.cs
        • FilterManager.cs
        • Function
          • .svn
            • dir-wcprops
            • empty-file
            • entries
            • format
            • prop-base
              • ByteFieldSource.cs.svn-base
              • CustomScoreQuery.cs.svn-base
              • DocValues.cs.svn-base
              • FieldCacheSource.cs.svn-base
              • FieldScoreQuery.cs.svn-base
              • FloatFieldSource.cs.svn-base
              • IntFieldSource.cs.svn-base
              • OrdFieldSource.cs.svn-base
              • Package.html.svn-base
              • ReverseOrdFieldSource.cs.svn-base
              • ShortFieldSource.cs.svn-base
              • ValueSource.cs.svn-base
              • ValueSourceQuery.cs.svn-base
            • props
              • ByteFieldSource.cs.svn-work
              • CustomScoreQuery.cs.svn-work
              • DocValues.cs.svn-work
              • FieldCacheSource.cs.svn-work
              • FieldScoreQuery.cs.svn-work
              • FloatFieldSource.cs.svn-work
              • IntFieldSource.cs.svn-work
              • OrdFieldSource.cs.svn-work
              • Package.html.svn-work
              • ReverseOrdFieldSource.cs.svn-work
              • ShortFieldSource.cs.svn-work
              • ValueSource.cs.svn-work
              • ValueSourceQuery.cs.svn-work
            • README.txt
            • text-base
              • ByteFieldSource.cs.svn-base
              • CustomScoreQuery.cs.svn-base
              • DocValues.cs.svn-base
              • FieldCacheSource.cs.svn-base
              • FieldScoreQuery.cs.svn-base
              • FloatFieldSource.cs.svn-base
              • IntFieldSource.cs.svn-base
              • OrdFieldSource.cs.svn-base
              • Package.html.svn-base
              • ReverseOrdFieldSource.cs.svn-base
              • ShortFieldSource.cs.svn-base
              • ValueSource.cs.svn-base
              • ValueSourceQuery.cs.svn-base
            • tmp
              • prop-base
              • props
              • text-base
              • wcprops
            • wcprops
              • ByteFieldSource.cs.svn-work
              • CustomScoreQuery.cs.svn-work
              • DocValues.cs.svn-work
              • FieldCacheSource.cs.svn-work
              • FieldScoreQuery.cs.svn-work
              • FloatFieldSource.cs.svn-work
              • IntFieldSource.cs.svn-work
              • OrdFieldSource.cs.svn-work
              • Package.html.svn-work
              • ReverseOrdFieldSource.cs.svn-work
              • ShortFieldSource.cs.svn-work
              • ValueSource.cs.svn-work
              • ValueSourceQuery.cs.svn-work
          • ByteFieldSource.cs
          • CustomScoreQuery.cs
          • DocValues.cs
          • FieldCacheSource.cs
          • FieldScoreQuery.cs
          • FloatFieldSource.cs
          • IntFieldSource.cs
          • OrdFieldSource.cs
          • Package.html
          • ReverseOrdFieldSource.cs
          • ShortFieldSource.cs
          • ValueSource.cs
          • ValueSourceQuery.cs
        • FuzzyQuery.cs
        • FuzzyTermEnum.cs
        • Hit.cs
        • HitCollector.cs
        • HitIterator.cs
        • HitQueue.cs
        • Hits.cs
        • IndexSearcher.cs
        • MatchAllDocsQuery.cs
        • MultiPhraseQuery.cs
        • MultiSearcher.cs
        • MultiTermQuery.cs
        • NonMatchingScorer.cs
        • Package.html
        • ParallelMultiSearcher.cs
        • Payload
          • .svn
            • dir-wcprops
            • empty-file
            • entries
            • format
            • prop-base
              • BoostingTermQuery.cs.svn-base
              • Package.html.svn-base
            • props
              • BoostingTermQuery.cs.svn-work
              • Package.html.svn-work
            • README.txt
            • text-base
              • BoostingTermQuery.cs.svn-base
              • Package.html.svn-base
            • tmp
              • prop-base
              • props
              • text-base
              • wcprops
            • wcprops
              • BoostingTermQuery.cs.svn-work
              • Package.html.svn-work
          • BoostingTermQuery.cs
          • Package.html
        • PhrasePositions.cs
        • PhraseQuery.cs
        • PhraseQueue.cs
        • PhraseScorer.cs
        • PrefixFilter.cs
        • PrefixQuery.cs
        • Query.cs
        • QueryFilter.cs
        • QueryTermVector.cs
        • QueryWrapperFilter.cs
        • RangeFilter.cs
        • RangeQuery.cs
        • RemoteCachingWrapperFilter.cs
        • RemoteSearchable.cs
        • ReqExclScorer.cs
        • ReqOptSumScorer.cs
        • ScoreDoc.cs
        • ScoreDocComparator.cs
        • Scorer.cs
        • Searchable.cs
        • Searcher.cs
        • Similarity.cs
        • SimilarityDelegator.cs
        • SloppyPhraseScorer.cs
        • Sort.cs
        • SortComparator.cs
        • SortComparatorSource.cs
        • SortField.cs
        • SpanFilter.cs
        • SpanFilterResult.cs
        • SpanQueryFilter.cs
        • Spans
          • .svn
            • dir-wcprops
            • empty-file
            • entries
            • format
            • prop-base
              • NearSpans.cs.svn-base
              • NearSpansOrdered.cs.svn-base
              • NearSpansUnordered.cs.svn-base
              • Package.html.svn-base
              • SpanFirstQuery.cs.svn-base
              • SpanNearQuery.cs.svn-base
              • SpanNotQuery.cs.svn-base
              • SpanOrQuery.cs.svn-base
              • SpanQuery.cs.svn-base
              • Spans.cs.svn-base
              • SpanScorer.cs.svn-base
              • SpanTermQuery.cs.svn-base
              • SpanWeight.cs.svn-base
              • TermSpans.cs.svn-base
            • props
              • NearSpans.cs.svn-work
              • NearSpansOrdered.cs.svn-work
              • NearSpansUnordered.cs.svn-work
              • Package.html.svn-work
              • SpanFirstQuery.cs.svn-work
              • SpanNearQuery.cs.svn-work
              • SpanNotQuery.cs.svn-work
              • SpanOrQuery.cs.svn-work
              • SpanQuery.cs.svn-work
              • Spans.cs.svn-work
              • SpanScorer.cs.svn-work
              • SpanTermQuery.cs.svn-work
              • SpanWeight.cs.svn-work
              • TermSpans.cs.svn-work
            • README.txt
            • text-base
              • NearSpans.cs.svn-base
              • NearSpansOrdered.cs.svn-base
              • NearSpansUnordered.cs.svn-base
              • Package.html.svn-base
              • SpanFirstQuery.cs.svn-base
              • SpanNearQuery.cs.svn-base
              • SpanNotQuery.cs.svn-base
              • SpanOrQuery.cs.svn-base
              • SpanQuery.cs.svn-base
              • Spans.cs.svn-base
              • SpanScorer.cs.svn-base
              • SpanTermQuery.cs.svn-base
              • SpanWeight.cs.svn-base
              • TermSpans.cs.svn-base
            • tmp
              • prop-base
              • props
              • text-base
              • wcprops
            • wcprops
              • NearSpans.cs.svn-work
              • NearSpansOrdered.cs.svn-work
              • NearSpansUnordered.cs.svn-work
              • Package.html.svn-work
              • SpanFirstQuery.cs.svn-work
              • SpanNearQuery.cs.svn-work
              • SpanNotQuery.cs.svn-work
              • SpanOrQuery.cs.svn-work
              • SpanQuery.cs.svn-work
              • Spans.cs.svn-work
              • SpanScorer.cs.svn-work
              • SpanTermQuery.cs.svn-work
              • SpanWeight.cs.svn-work
              • TermSpans.cs.svn-work
          • NearSpans.cs
          • NearSpansOrdered.cs
          • NearSpansUnordered.cs
          • Package.html
          • SpanFirstQuery.cs
          • SpanNearQuery.cs
          • SpanNotQuery.cs
          • SpanOrQuery.cs
          • SpanQuery.cs
          • Spans.cs
          • SpanScorer.cs
          • SpanTermQuery.cs
          • SpanWeight.cs
          • TermSpans.cs
        • TermQuery.cs
        • TermScorer.cs
        • TopDocCollector.cs
        • TopDocs.cs
        • TopFieldDocCollector.cs
        • TopFieldDocs.cs
        • Weight.cs
        • WildcardQuery.cs
        • WildcardTermEnum.cs
      • SharpZipLibAdapter.cs
      • Store
        • .svn
          • dir-wcprops
          • empty-file
          • entries
          • format
          • prop-base
            • AlreadyClosedException.cs.svn-base
            • BufferedIndexInput.cs.svn-base
            • BufferedIndexOutput.cs.svn-base
            • Directory.cs.svn-base
            • FSDirectory.cs.svn-base
            • IndexInput.cs.svn-base
            • IndexOutput.cs.svn-base
            • Lock.cs.svn-base
            • LockFactory.cs.svn-base
            • LockObtainFailedException.cs.svn-base
            • LockReleaseFailedException.cs.svn-base
            • LockStressTest.cs.svn-base
            • LockVerifyServer.cs.svn-base
            • MMapDirectory.cs.svn-base
            • NativeFSLockFactory.cs.svn-base
            • NoLockFactory.cs.svn-base
            • Package.html.svn-base
            • RAMDirectory.cs.svn-base
            • RAMFile.cs.svn-base
            • RAMInputStream.cs.svn-base
            • RAMOutputStream.cs.svn-base
            • SimpleFSLockFactory.cs.svn-base
            • SingleInstanceLockFactory.cs.svn-base
            • VerifyingLockFactory.cs.svn-base
          • props
            • AlreadyClosedException.cs.svn-work
            • BufferedIndexInput.cs.svn-work
            • BufferedIndexOutput.cs.svn-work
            • Directory.cs.svn-work
            • FSDirectory.cs.svn-work
            • IndexInput.cs.svn-work
            • IndexOutput.cs.svn-work
            • Lock.cs.svn-work
            • LockFactory.cs.svn-work
            • LockObtainFailedException.cs.svn-work
            • LockReleaseFailedException.cs.svn-work
            • LockStressTest.cs.svn-work
            • LockVerifyServer.cs.svn-work
            • MMapDirectory.cs.svn-work
            • NativeFSLockFactory.cs.svn-work
            • NoLockFactory.cs.svn-work
            • Package.html.svn-work
            • RAMDirectory.cs.svn-work
            • RAMFile.cs.svn-work
            • RAMInputStream.cs.svn-work
            • RAMOutputStream.cs.svn-work
            • SimpleFSLockFactory.cs.svn-work
            • SingleInstanceLockFactory.cs.svn-work
            • VerifyingLockFactory.cs.svn-work
          • README.txt
          • text-base
            • AlreadyClosedException.cs.svn-base
            • BufferedIndexInput.cs.svn-base
            • BufferedIndexOutput.cs.svn-base
            • Directory.cs.svn-base
            • FSDirectory.cs.svn-base
            • IndexInput.cs.svn-base
            • IndexOutput.cs.svn-base
            • Lock.cs.svn-base
            • LockFactory.cs.svn-base
            • LockObtainFailedException.cs.svn-base
            • LockReleaseFailedException.cs.svn-base
            • LockStressTest.cs.svn-base
            • LockVerifyServer.cs.svn-base
            • MMapDirectory.cs.svn-base
            • NativeFSLockFactory.cs.svn-base
            • NoLockFactory.cs.svn-base
            • Package.html.svn-base
            • RAMDirectory.cs.svn-base
            • RAMFile.cs.svn-base
            • RAMInputStream.cs.svn-base
            • RAMOutputStream.cs.svn-base
            • SimpleFSLockFactory.cs.svn-base
            • SingleInstanceLockFactory.cs.svn-base
            • VerifyingLockFactory.cs.svn-base
          • tmp
            • prop-base
            • props
            • text-base
            • wcprops
          • wcprops
            • AlreadyClosedException.cs.svn-work
            • BufferedIndexInput.cs.svn-work
            • BufferedIndexOutput.cs.svn-work
            • Directory.cs.svn-work
            • FSDirectory.cs.svn-work
            • IndexInput.cs.svn-work
            • IndexOutput.cs.svn-work
            • Lock.cs.svn-work
            • LockFactory.cs.svn-work
            • LockObtainFailedException.cs.svn-work
            • LockReleaseFailedException.cs.svn-work
            • LockStressTest.cs.svn-work
            • LockVerifyServer.cs.svn-work
            • MMapDirectory.cs.svn-work
            • NativeFSLockFactory.cs.svn-work
            • NoLockFactory.cs.svn-work
            • Package.html.svn-work
            • RAMDirectory.cs.svn-work
            • RAMFile.cs.svn-work
            • RAMInputStream.cs.svn-work
            • RAMOutputStream.cs.svn-work
            • SimpleFSLockFactory.cs.svn-work
            • SingleInstanceLockFactory.cs.svn-work
            • VerifyingLockFactory.cs.svn-work
        • AlreadyClosedException.cs
        • BufferedIndexInput.cs
        • BufferedIndexOutput.cs
        • Directory.cs
        • FSDirectory.cs
        • IndexInput.cs
        • IndexOutput.cs
        • Lock.cs
        • LockFactory.cs
        • LockObtainFailedException.cs
        • LockReleaseFailedException.cs
        • LockStressTest.cs
        • LockVerifyServer.cs
        • MMapDirectory.cs
        • NativeFSLockFactory.cs
        • NoLockFactory.cs
        • Package.html
        • RAMDirectory.cs
        • RAMFile.cs
        • RAMInputStream.cs
        • RAMOutputStream.cs
        • SimpleFSLockFactory.cs
        • SingleInstanceLockFactory.cs
        • VerifyingLockFactory.cs
      • SupportClass.cs
      • Util
        • .svn
          • dir-wcprops
          • empty-file
          • entries
          • format
          • prop-base
            • BitVector.cs.svn-base
            • Constants.cs.svn-base
            • Package.html.svn-base
            • Parameter.cs.svn-base
            • PriorityQueue.cs.svn-base
            • ScorerDocQueue.cs.svn-base
            • SmallFloat.cs.svn-base
            • StringHelper.cs.svn-base
            • ToStringUtils.cs.svn-base
          • props
            • BitVector.cs.svn-work
            • Constants.cs.svn-work
            • Package.html.svn-work
            • Parameter.cs.svn-work
            • PriorityQueue.cs.svn-work
            • ScorerDocQueue.cs.svn-work
            • SmallFloat.cs.svn-work
            • StringHelper.cs.svn-work
            • ToStringUtils.cs.svn-work
          • README.txt
          • text-base
            • BitVector.cs.svn-base
            • Constants.cs.svn-base
            • Package.html.svn-base
            • Parameter.cs.svn-base
            • PriorityQueue.cs.svn-base
            • ScorerDocQueue.cs.svn-base
            • SmallFloat.cs.svn-base
            • StringHelper.cs.svn-base
            • ToStringUtils.cs.svn-base
          • tmp
            • prop-base
            • props
            • text-base
            • wcprops
          • wcprops
            • BitVector.cs.svn-work
            • Constants.cs.svn-work
            • Package.html.svn-work
            • Parameter.cs.svn-work
            • PriorityQueue.cs.svn-work
            • ScorerDocQueue.cs.svn-work
            • SmallFloat.cs.svn-work
            • StringHelper.cs.svn-work
            • ToStringUtils.cs.svn-work
        • BitVector.cs
        • Constants.cs
        • Package.html
        • Parameter.cs
        • PriorityQueue.cs
        • ScorerDocQueue.cs
        • SmallFloat.cs
        • StringHelper.cs
        • ToStringUtils.cs
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

using System;

using Document = Lucene.Net.Documents.Document;
using FieldSelector = Lucene.Net.Documents.FieldSelector;
using Directory = Lucene.Net.Store.Directory;

namespace Lucene.Net.Index
{
	
	/// <summary> An IndexReader which reads indexes with multiple segments.</summary>
	public class MultiSegmentReader : DirectoryIndexReader
	{
		protected internal SegmentReader[] subReaders;
		private int[] starts; // 1st docno for each segment
		private System.Collections.Hashtable normsCache = System.Collections.Hashtable.Synchronized(new System.Collections.Hashtable());
		private int maxDoc = 0;
		private int numDocs = - 1;
		private bool hasDeletions = false;
		
		/// <summary>Construct reading the named set of readers. </summary>
		internal MultiSegmentReader(Directory directory, SegmentInfos sis, bool closeDirectory):base(directory, sis, closeDirectory)
		{
			// To reduce the chance of hitting FileNotFound
			// (and having to retry), we open segments in
			// reverse because IndexWriter merges & deletes
			// the newest segments first.
			
			SegmentReader[] readers = new SegmentReader[sis.Count];
			for (int i = sis.Count - 1; i >= 0; i--)
			{
				try
				{
					readers[i] = SegmentReader.Get(sis.Info(i));
				}
				catch (System.IO.IOException e)
				{
					// Close all readers we had opened:
					for (i++; i < sis.Count; i++)
					{
						try
						{
							readers[i].Close();
						}
						catch (System.IO.IOException ignore)
						{
							// keep going - we want to clean up as much as possible
						}
					}
					throw e;
				}
			}
			
			Initialize(readers);
		}
		
		/// <summary>This contructor is only used for {@link #Reopen()} </summary>
		internal MultiSegmentReader(Directory directory, SegmentInfos infos, bool closeDirectory, SegmentReader[] oldReaders, int[] oldStarts, System.Collections.IDictionary oldNormsCache):base(directory, infos, closeDirectory)
		{
			
			// we put the old SegmentReaders in a map, that allows us
			// to lookup a reader using its segment name
			System.Collections.IDictionary segmentReaders = new System.Collections.Hashtable();
			
			if (oldReaders != null)
			{
				// create a Map SegmentName->SegmentReader
				for (int i = 0; i < oldReaders.Length; i++)
				{
					segmentReaders[oldReaders[i].GetSegmentName()] = (System.Int32) i;
				}
			}
			
			SegmentReader[] newReaders = new SegmentReader[infos.Count];
			
			// remember which readers are shared between the old and the re-opened
			// MultiSegmentReader - we have to incRef those readers
			bool[] readerShared = new bool[infos.Count];
			
			for (int i = infos.Count - 1; i >= 0; i--)
			{
				// find SegmentReader for this segment
				Object oldReaderIndex = segmentReaders[infos.Info(i).name];
				if (oldReaderIndex == null)
				{
					// this is a new segment, no old SegmentReader can be reused
					newReaders[i] = null;
				}
				else
				{
					// there is an old reader for this segment - we'll try to reopen it
					newReaders[i] = oldReaders[(System.Int32) oldReaderIndex];
				}
				
				bool success = false;
				try
				{
					SegmentReader newReader;
					if (newReaders[i] == null || infos.Info(i).GetUseCompoundFile() != newReaders[i].GetSegmentInfo().GetUseCompoundFile())
					{
						// this is a new reader; in case we hit an exception we can close it safely
						newReader = SegmentReader.Get(infos.Info(i));
					}
					else
					{
						newReader = (SegmentReader) newReaders[i].ReopenSegment(infos.Info(i));
					}
					if (newReader == newReaders[i])
					{
						// this reader will be shared between the old and the new one,
						// so we must incRef it
						readerShared[i] = true;
						newReader.IncRef();
					}
					else
					{
						readerShared[i] = false;
						newReaders[i] = newReader;
					}
					success = true;
				}
				finally
				{
					if (!success)
					{
						for (i++; i < infos.Count; i++)
						{
							if (newReaders[i] != null)
							{
								try
								{
									if (!readerShared[i])
									{
										// this is a new subReader that is not used by the old one,
										// we can close it
										newReaders[i].Close();
									}
									else
									{
										// this subReader is also used by the old reader, so instead
										// closing we must decRef it
										newReaders[i].DecRef();
									}
								}
								catch (System.IO.IOException ignore)
								{
									// keep going - we want to clean up as much as possible
								}
							}
						}
					}
				}
			}
			
			// initialize the readers to calculate maxDoc before we try to reuse the old normsCache
			Initialize(newReaders);
			
			// try to copy unchanged norms from the old normsCache to the new one
			if (oldNormsCache != null)
			{
				System.Collections.IEnumerator it = oldNormsCache.Keys.GetEnumerator();
				while (it.MoveNext())
				{
					System.String field = (System.String) it.Current;
					if (!HasNorms(field))
					{
						continue;
					}
					
					byte[] oldBytes = (byte[]) oldNormsCache[field];
					
					byte[] bytes = new byte[MaxDoc()];
					
					for (int i = 0; i < subReaders.Length; i++)
					{
						Object oldReaderIndex = segmentReaders[subReaders[i].GetSegmentName()];
						
						// this SegmentReader was not re-opened, we can copy all of its norms 
						if (oldReaderIndex != null && (oldReaders[(System.Int32) oldReaderIndex] == subReaders[i] || oldReaders[(System.Int32) oldReaderIndex].norms[field] == subReaders[i].norms[field]))
						{
							// we don't have to synchronize here: either this constructor is called from a SegmentReader,
							// in which case no old norms cache is present, or it is called from MultiReader.reopen(),
							// which is synchronized
							Array.Copy(oldBytes, oldStarts[(System.Int32) oldReaderIndex], bytes, starts[i], starts[i + 1] - starts[i]);
						}
						else
						{
							subReaders[i].Norms(field, bytes, starts[i]);
						}
					}
					
					normsCache[field] = bytes; // update cache
				}
			}
		}
		
		private void  Initialize(SegmentReader[] subReaders)
		{
			this.subReaders = subReaders;
			starts = new int[subReaders.Length + 1]; // build starts array
			for (int i = 0; i < subReaders.Length; i++)
			{
				starts[i] = maxDoc;
				maxDoc += subReaders[i].MaxDoc(); // compute maxDocs
				
				if (subReaders[i].HasDeletions())
					hasDeletions = true;
			}
			starts[subReaders.Length] = maxDoc;
		}
		
		protected internal override DirectoryIndexReader DoReopen(SegmentInfos infos)
		{
			lock (this)
			{
				if (infos.Count == 1)
				{
					// The index has only one segment now, so we can't refresh the MultiSegmentReader.
					// Return a new SegmentReader instead
					SegmentReader newReader = SegmentReader.Get(infos, infos.Info(0), false);
					return newReader;
				}
				else
				{
					return new MultiSegmentReader(directory, infos, closeDirectory, subReaders, starts, normsCache);
				}
			}
		}
		
		public override TermFreqVector[] GetTermFreqVectors(int n)
		{
			EnsureOpen();
			int i = ReaderIndex(n); // find segment num
			return subReaders[i].GetTermFreqVectors(n - starts[i]); // dispatch to segment
		}
		
		public override TermFreqVector GetTermFreqVector(int n, System.String field)
		{
			EnsureOpen();
			int i = ReaderIndex(n); // find segment num
			return subReaders[i].GetTermFreqVector(n - starts[i], field);
		}
		
		
		public override void  GetTermFreqVector(int docNumber, System.String field, TermVectorMapper mapper)
		{
			EnsureOpen();
			int i = ReaderIndex(docNumber); // find segment num
			subReaders[i].GetTermFreqVector(docNumber - starts[i], field, mapper);
		}
		
		public override void  GetTermFreqVector(int docNumber, TermVectorMapper mapper)
		{
			EnsureOpen();
			int i = ReaderIndex(docNumber); // find segment num
			subReaders[i].GetTermFreqVector(docNumber - starts[i], mapper);
		}
		
		public override bool IsOptimized()
		{
			return false;
		}
		
		public override int NumDocs()
		{
			lock (this)
			{
				// Don't call ensureOpen() here (it could affect performance)
				if (numDocs == - 1)
				{
					// check cache
					int n = 0; // cache miss--recompute
					for (int i = 0; i < subReaders.Length; i++)
						n += subReaders[i].NumDocs(); // sum from readers
					numDocs = n;
				}
				return numDocs;
			}
		}
		
		public override int MaxDoc()
		{
			// Don't call ensureOpen() here (it could affect performance)
			return maxDoc;
		}
		
		// inherit javadoc
		public override Document Document(int n, FieldSelector fieldSelector)
		{
			EnsureOpen();
			int i = ReaderIndex(n); // find segment num
			return subReaders[i].Document(n - starts[i], fieldSelector); // dispatch to segment reader
		}
		
		public override bool IsDeleted(int n)
		{
			// Don't call ensureOpen() here (it could affect performance)
			int i = ReaderIndex(n); // find segment num
			return subReaders[i].IsDeleted(n - starts[i]); // dispatch to segment reader
		}
		
		public override bool HasDeletions()
		{
			// Don't call ensureOpen() here (it could affect performance)
			return hasDeletions;
		}
		
		protected internal override void  DoDelete(int n)
		{
			numDocs = - 1; // invalidate cache
			int i = ReaderIndex(n); // find segment num
			subReaders[i].DeleteDocument(n - starts[i]); // dispatch to segment reader
			hasDeletions = true;
		}
		
		protected internal override void  DoUndeleteAll()
		{
			for (int i = 0; i < subReaders.Length; i++)
				subReaders[i].UndeleteAll();
			
			hasDeletions = false;
			numDocs = - 1; // invalidate cache
		}
		
		private int ReaderIndex(int n)
		{
			// find reader for doc n:
			return ReaderIndex(n, this.starts, this.subReaders.Length);
		}
		
		internal static int ReaderIndex(int n, int[] starts, int numSubReaders)
		{
			// find reader for doc n:
			int lo = 0; // search starts array
			int hi = numSubReaders - 1; // for first element less
			
			while (hi >= lo)
			{
				int mid = (lo + hi) >> 1;
				int midValue = starts[mid];
				if (n < midValue)
					hi = mid - 1;
				else if (n > midValue)
					lo = mid + 1;
				else
				{
					// found a match
					while (mid + 1 < numSubReaders && starts[mid + 1] == midValue)
					{
						mid++; // scan to last match
					}
					return mid;
				}
			}
			return hi;
		}
		
		public override bool HasNorms(System.String field)
		{
			EnsureOpen();
			for (int i = 0; i < subReaders.Length; i++)
			{
				if (subReaders[i].HasNorms(field))
					return true;
			}
			return false;
		}
		
		private byte[] ones;
		private byte[] fakeNorms()
		{
			if (ones == null)
				ones = SegmentReader.CreateFakeNorms(MaxDoc());
			return ones;
		}
		
		public override byte[] Norms(System.String field)
		{
			lock (this)
			{
				EnsureOpen();
				byte[] bytes = (byte[]) normsCache[field];
				if (bytes != null)
					return bytes; // cache hit
				if (!HasNorms(field))
					return fakeNorms();
				
				bytes = new byte[MaxDoc()];
				for (int i = 0; i < subReaders.Length; i++)
					subReaders[i].Norms(field, bytes, starts[i]);
				normsCache[field] = bytes; // update cache
				return bytes;
			}
		}
		
		public override void  Norms(System.String field, byte[] result, int offset)
		{
			lock (this)
			{
				EnsureOpen();
				byte[] bytes = (byte[]) normsCache[field];
				if (bytes == null && !HasNorms(field))
					bytes = fakeNorms();
				if (bytes != null)
				// cache hit
					Array.Copy(bytes, 0, result, offset, MaxDoc());
				
				for (int i = 0; i < subReaders.Length; i++)
				// read from segments
					subReaders[i].Norms(field, result, offset + starts[i]);
			}
		}
		
		protected internal override void  DoSetNorm(int n, System.String field, byte value_Renamed)
		{
			normsCache.Remove(field); // clear cache
			int i = ReaderIndex(n); // find segment num
			subReaders[i].SetNorm(n - starts[i], field, value_Renamed); // dispatch
		}
		
		public override TermEnum Terms()
		{
			EnsureOpen();
			return new MultiTermEnum(subReaders, starts, null);
		}
		
		public override TermEnum Terms(Term term)
		{
			EnsureOpen();
			return new MultiTermEnum(subReaders, starts, term);
		}
		
		public override int DocFreq(Term t)
		{
			EnsureOpen();
			int total = 0; // sum freqs in segments
			for (int i = 0; i < subReaders.Length; i++)
				total += subReaders[i].DocFreq(t);
			return total;
		}
		
		public override TermDocs TermDocs()
		{
			EnsureOpen();
			return new MultiTermDocs(subReaders, starts);
		}
		
		public override TermPositions TermPositions()
		{
			EnsureOpen();
			return new MultiTermPositions(subReaders, starts);
		}
		
		protected internal override void  CommitChanges()
		{
			for (int i = 0; i < subReaders.Length; i++)
				subReaders[i].Commit();
		}
		
		internal override void  StartCommit()
		{
			base.StartCommit();
			for (int i = 0; i < subReaders.Length; i++)
			{
				subReaders[i].StartCommit();
			}
		}
		
		internal override void  RollbackCommit()
		{
			base.RollbackCommit();
			for (int i = 0; i < subReaders.Length; i++)
			{
				subReaders[i].RollbackCommit();
			}
		}
		
		protected internal override void  DoClose()
		{
			lock (this)
			{
				for (int i = 0; i < subReaders.Length; i++)
					subReaders[i].DecRef();
				
				// maybe close directory
				base.DoClose();
			}
		}
		
		public override System.Collections.ICollection GetFieldNames(IndexReader.FieldOption fieldNames)
		{
			EnsureOpen();
			return GetFieldNames(fieldNames, this.subReaders);
		}
		
		internal static System.Collections.ICollection GetFieldNames(IndexReader.FieldOption fieldNames, IndexReader[] subReaders)
		{
			// maintain a unique set of field names
			System.Collections.Hashtable fieldSet = new System.Collections.Hashtable();
			for (int i = 0; i < subReaders.Length; i++)
			{
				IndexReader reader = subReaders[i];
				System.Collections.IEnumerator names = ((System.Collections.IDictionary)reader.GetFieldNames(fieldNames)).Keys.GetEnumerator();
				while (names.MoveNext())
				{
					if (!fieldSet.ContainsKey(names.Current))
						fieldSet.Add(names.Current, names.Current);
				}
			}
			return fieldSet;
		}
		
		// for testing
		public /*internal*/ virtual SegmentReader[] GetSubReaders()
		{
			return subReaders;
		}
		
		public override void  SetTermInfosIndexDivisor(int indexDivisor)
		{
			for (int i = 0; i < subReaders.Length; i++)
				subReaders[i].SetTermInfosIndexDivisor(indexDivisor);
		}
		
		public override int GetTermInfosIndexDivisor()
		{
			if (subReaders.Length > 0)
				return subReaders[0].GetTermInfosIndexDivisor();
			else
				throw new System.SystemException("no readers");
		}
		
		internal class MultiTermEnum:TermEnum
		{
			private SegmentMergeQueue queue;
			
			private Term term;
			private int docFreq;
			
			public MultiTermEnum(IndexReader[] readers, int[] starts, Term t)
			{
				queue = new SegmentMergeQueue(readers.Length);
				for (int i = 0; i < readers.Length; i++)
				{
					IndexReader reader = readers[i];
					TermEnum termEnum;
					
					if (t != null)
					{
						termEnum = reader.Terms(t);
					}
					else
						termEnum = reader.Terms();
					
					SegmentMergeInfo smi = new SegmentMergeInfo(starts[i], termEnum, reader);
					if (t == null ? smi.Next() : termEnum.Term() != null)
						queue.Put(smi);
					// initialize queue
					else
						smi.Close();
				}
				
				if (t != null && queue.Size() > 0)
				{
					Next();
				}
			}
			
			public override bool Next()
			{
				SegmentMergeInfo top = (SegmentMergeInfo) queue.Top();
				if (top == null)
				{
					term = null;
					return false;
				}
				
				term = top.term;
				docFreq = 0;
				
				while (top != null && term.CompareTo(top.term) == 0)
				{
					queue.Pop();
					docFreq += top.termEnum.DocFreq(); // increment freq
					if (top.Next())
						queue.Put(top);
					// restore queue
					else
						top.Close(); // done with a segment
					top = (SegmentMergeInfo) queue.Top();
				}
				return true;
			}
			
			public override Term Term()
			{
				return term;
			}
			
			public override int DocFreq()
			{
				return docFreq;
			}
			
			public override void  Close()
			{
				queue.Close();
			}
		}
		
		internal class MultiTermDocs : TermDocs
		{
			protected internal IndexReader[] readers;
			protected internal int[] starts;
			protected internal Term term;
			
			protected internal int base_Renamed = 0;
			protected internal int pointer = 0;
			
			private TermDocs[] readerTermDocs;
			protected internal TermDocs current; // == readerTermDocs[pointer]
			
			public MultiTermDocs(IndexReader[] r, int[] s)
			{
				readers = r;
				starts = s;
				
				readerTermDocs = new TermDocs[r.Length];
			}
			
			public virtual int Doc()
			{
				return base_Renamed + current.Doc();
			}
			public virtual int Freq()
			{
				return current.Freq();
			}
			
			public virtual void  Seek(Term term)
			{
				this.term = term;
				this.base_Renamed = 0;
				this.pointer = 0;
				this.current = null;
			}
			
			public virtual void  Seek(TermEnum termEnum)
			{
				Seek(termEnum.Term());
			}
			
			public virtual bool Next()
			{
				for (; ; )
				{
					if (current != null && current.Next())
					{
						return true;
					}
					else if (pointer < readers.Length)
					{
						base_Renamed = starts[pointer];
						current = TermDocs(pointer++);
					}
					else
					{
						return false;
					}
				}
			}
			
			/// <summary>Optimized implementation. </summary>
			public virtual int Read(int[] docs, int[] freqs)
			{
				while (true)
				{
					while (current == null)
					{
						if (pointer < readers.Length)
						{
							// try next segment
							base_Renamed = starts[pointer];
							current = TermDocs(pointer++);
						}
						else
						{
							return 0;
						}
					}
					int end = current.Read(docs, freqs);
					if (end == 0)
					{
						// none left in segment
						current = null;
					}
					else
					{
						// got some
						int b = base_Renamed; // adjust doc numbers
						for (int i = 0; i < end; i++)
							docs[i] += b;
						return end;
					}
				}
			}
			
			/* A Possible future optimization could skip entire segments */
			public virtual bool SkipTo(int target)
			{
				for (; ; )
				{
					if (current != null && current.SkipTo(target - base_Renamed))
					{
						return true;
					}
					else if (pointer < readers.Length)
					{
						base_Renamed = starts[pointer];
						current = TermDocs(pointer++);
					}
					else
						return false;
				}
			}
			
			private TermDocs TermDocs(int i)
			{
				if (term == null)
					return null;
				TermDocs result = readerTermDocs[i];
				if (result == null)
					result = readerTermDocs[i] = TermDocs(readers[i]);
				result.Seek(term);
				return result;
			}
			
			protected internal virtual TermDocs TermDocs(IndexReader reader)
			{
				return reader.TermDocs();
			}
			
			public virtual void  Close()
			{
				for (int i = 0; i < readerTermDocs.Length; i++)
				{
					if (readerTermDocs[i] != null)
						readerTermDocs[i].Close();
				}
			}
		}
		
		internal class MultiTermPositions:MultiTermDocs, TermPositions
		{
			public MultiTermPositions(IndexReader[] r, int[] s):base(r, s)
			{
			}
			
			protected internal override TermDocs TermDocs(IndexReader reader)
			{
				return (TermDocs) reader.TermPositions();
			}
			
			public virtual int NextPosition()
			{
				return ((TermPositions) current).NextPosition();
			}
			
			public virtual int GetPayloadLength()
			{
				return ((TermPositions) current).GetPayloadLength();
			}
			
			public virtual byte[] GetPayload(byte[] data, int offset)
			{
				return ((TermPositions) current).GetPayload(data, offset);
			}
			
			
			// TODO: Remove warning after API has been finalized
			public virtual bool IsPayloadAvailable()
			{
				return ((TermPositions) current).IsPayloadAvailable();
			}
		}
	}
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer (Senior) http://www.mascix.com/
Turkey Turkey

Comments and Discussions