Code/Resource
Windows Develop
Linux-Unix program
Internet-Socket-Network
Web Server
Browser Client
Ftp Server
Ftp Client
Browser Plugins
Proxy Server
Email Server
Email Client
WEB Mail
Firewall-Security
Telnet Server
Telnet Client
ICQ-IM-Chat
Search Engine
Sniffer Package capture
Remote Control
xml-soap-webservice
P2P
WEB(ASP,PHP,...)
TCP/IP Stack
SNMP
Grid Computing
SilverLight
DNS
Cluster Service
Network Security
Communication-Mobile
Game Program
Editor
Multimedia program
Graph program
Compiler program
Compress-Decompress algrithms
Crypt_Decrypt algrithms
Mathimatics-Numerical algorithms
MultiLanguage
Disk/Storage
Java Develop
assembly language
Applications
Other systems
Database system
Embeded-SCM Develop
FlashMX/Flex
source in ebook
Delphi VCL
OS Develop
MiddleWare
MPI
MacOS develop
LabView
ELanguage
Software/Tools
E-Books
Artical/Document
SegmentTermEnum.cs
Package: xunlong0.6.rar [view]
Upload User: zhangkuixh
Upload Date: 2013-09-30
Package Size: 5473k
Code Size: 6k
Category:
Search Engine
Development Platform:
C#
- /*
- * Copyright 2004 The Apache Software Foundation
- *
- * Licensed 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 IndexInput = Lucene.Net.Store.IndexInput;
- namespace Lucene.Net.Index
- {
- public sealed class SegmentTermEnum : TermEnum, System.ICloneable
- {
- private IndexInput input;
- internal FieldInfos fieldInfos;
- internal long size;
- internal long position = - 1;
- private TermBuffer termBuffer = new TermBuffer();
- private TermBuffer prevBuffer = new TermBuffer();
- private TermBuffer scratch; // used for scanning
- private TermInfo termInfo = new TermInfo();
- private int format;
- private bool isIndex = false;
- internal long indexPointer = 0;
- internal int indexInterval;
- internal int skipInterval;
- private int formatM1SkipInterval;
- internal SegmentTermEnum(IndexInput i, FieldInfos fis, bool isi)
- {
- input = i;
- fieldInfos = fis;
- isIndex = isi;
- int firstInt = input.ReadInt();
- if (firstInt >= 0)
- {
- // original-format file, without explicit format version number
- format = 0;
- size = firstInt;
- // back-compatible settings
- indexInterval = 128;
- skipInterval = System.Int32.MaxValue; // switch off skipTo optimization
- }
- else
- {
- // we have a format version number
- format = firstInt;
- // check that it is a format we can understand
- if (format < TermInfosWriter.FORMAT)
- throw new System.IO.IOException("Unknown format version:" + format);
- size = input.ReadLong(); // read the size
- if (format == - 1)
- {
- if (!isIndex)
- {
- indexInterval = input.ReadInt();
- formatM1SkipInterval = input.ReadInt();
- }
- // switch off skipTo optimization for file format prior to 1.4rc2 in order to avoid a bug in
- // skipTo implementation of these versions
- skipInterval = System.Int32.MaxValue;
- }
- else
- {
- indexInterval = input.ReadInt();
- skipInterval = input.ReadInt();
- }
- }
- }
- public System.Object Clone()
- {
- SegmentTermEnum clone = null;
- try
- {
- clone = (SegmentTermEnum) base.MemberwiseClone();
- }
- catch (System.Exception)
- {
- }
- clone.input = (IndexInput) input.Clone();
- clone.termInfo = new TermInfo(termInfo);
- clone.termBuffer = (TermBuffer) termBuffer.Clone();
- clone.prevBuffer = (TermBuffer) prevBuffer.Clone();
- clone.scratch = null;
- return clone;
- }
- internal void Seek(long pointer, int p, Term t, TermInfo ti)
- {
- input.Seek(pointer);
- position = p;
- termBuffer.Set(t);
- prevBuffer.Reset();
- termInfo.Set(ti);
- }
- /// <summary>Increments the enumeration to the next element. True if one exists.</summary>
- public override bool Next()
- {
- if (position++ >= size - 1)
- {
- termBuffer.Reset();
- return false;
- }
- prevBuffer.Set(termBuffer);
- termBuffer.Read(input, fieldInfos);
- termInfo.docFreq = input.ReadVInt(); // read doc freq
- termInfo.freqPointer += input.ReadVLong(); // read freq pointer
- termInfo.proxPointer += input.ReadVLong(); // read prox pointer
- if (format == - 1)
- {
- // just read skipOffset in order to increment file pointer;
- // value is never used since skipTo is switched off
- if (!isIndex)
- {
- if (termInfo.docFreq > formatM1SkipInterval)
- {
- termInfo.skipOffset = input.ReadVInt();
- }
- }
- }
- else
- {
- if (termInfo.docFreq >= skipInterval)
- termInfo.skipOffset = input.ReadVInt();
- }
- if (isIndex)
- indexPointer += input.ReadVLong(); // read index pointer
- return true;
- }
- /// <summary>Optimized scan, without allocating new terms. </summary>
- internal void ScanTo(Term term)
- {
- if (scratch == null)
- scratch = new TermBuffer();
- scratch.Set(term);
- while (scratch.CompareTo(termBuffer) > 0 && Next())
- {
- }
- }
- /// <summary>Returns the current Term in the enumeration.
- /// Initially invalid, valid after next() called for the first time.
- /// </summary>
- public override Term Term()
- {
- return termBuffer.ToTerm();
- }
- /// <summary>Returns the previous Term enumerated. Initially null.</summary>
- internal Term Prev()
- {
- return prevBuffer.ToTerm();
- }
- /// <summary>Returns the current TermInfo in the enumeration.
- /// Initially invalid, valid after next() called for the first time.
- /// </summary>
- internal TermInfo TermInfo()
- {
- return new TermInfo(termInfo);
- }
- /// <summary>Sets the argument to the current TermInfo in the enumeration.
- /// Initially invalid, valid after next() called for the first time.
- /// </summary>
- internal void TermInfo(TermInfo ti)
- {
- ti.Set(termInfo);
- }
- /// <summary>Returns the docFreq from the current TermInfo in the enumeration.
- /// Initially invalid, valid after next() called for the first time.
- /// </summary>
- public override int DocFreq()
- {
- return termInfo.docFreq;
- }
- /* Returns the freqPointer from the current TermInfo in the enumeration.
- Initially invalid, valid after next() called for the first time.*/
- internal long FreqPointer()
- {
- return termInfo.freqPointer;
- }
- /* Returns the proxPointer from the current TermInfo in the enumeration.
- Initially invalid, valid after next() called for the first time.*/
- internal long ProxPointer()
- {
- return termInfo.proxPointer;
- }
- /// <summary>Closes the enumeration to further activity, freeing resources. </summary>
- public override void Close()
- {
- input.Close();
- }
- }
- }