/// <summary> /// Only get the word step doc index. /// </summary> /// <param name="word"></param> /// <param name="filePositionList"></param> /// <param name="totalDocs"></param> /// <param name="dbProvider"></param> /// <param name="maxReturnCount"></param> /// <returns></returns> internal Hubble.Core.Index.WordIndexReader GetWordIndexWithWordStepDocIndex(string word, WordFilePositionList filePositionList, int totalDocs, Data.DBProvider dbProvider, int maxReturnCount) { List <WordStepDocIndex.IndexFileInfo> indexFileInfoList = new List <WordStepDocIndex.IndexFileInfo>(); //StepDocIndex of all index files bool simple = _IndexMode == Hubble.Core.Data.Field.IndexMode.Simple; long wordCountSum = 0; foreach (FilePosition filePosition in filePositionList.FPList) { IDXFile idxFile = GetIDXFile(filePosition.Serial); if (idxFile == null) { continue; } int count; long indexPosition; List <Hubble.Core.Entity.DocumentPosition> stepDocIndex = idxFile.GetStepDocIndex(filePosition.Position, filePosition.Length, out count, out indexPosition); indexFileInfoList.Add(new WordStepDocIndex.IndexFileInfo(stepDocIndex, new FilePosition(filePosition.Serial, indexPosition, (int)(filePosition.Length - (indexPosition - filePosition.Position) - sizeof(int))), //Subtract last 4 bytes for last doc id and Subtract stepdocindex length count)); wordCountSum += count; } int relDocCount = (int)wordCountSum; //if (maxReturnCount >= 0) //{ // if (wordCountSum > maxReturnCount) // { // relDocCount = maxReturnCount; // } //} WordStepDocIndex wordStepDocIndex = new WordStepDocIndex(indexFileInfoList, wordCountSum, relDocCount, simple); return(new WordIndexReader(word, wordStepDocIndex, totalDocs, dbProvider, _IndexFileProxy, maxReturnCount)); }
public IndexReader(WordStepDocIndex wsdi, IndexFileProxy indexProxy) { _WordStepDocIndex = wsdi; _IndexFileProxy = indexProxy; }