コード例 #1
0
        /// <summary>Return all term vectors stored for this document or null if the could not be read in. </summary>
        internal virtual TermFreqVector[] Get(int docNum)
        {
            lock (this)
            {
                TermFreqVector[] result = null;
                // Check if no term vectors are available for this segment at all
                if (tvx != null)
                {
                    try
                    {
                        //We need to offset by
                        tvx.Seek((docNum * 8L) + TermVectorsWriter.FORMAT_SIZE);
                        long position = tvx.ReadLong();

                        tvd.Seek(position);
                        int fieldCount = tvd.ReadVInt();

                        // No fields are vectorized for this document
                        if (fieldCount != 0)
                        {
                            int             number = 0;
                            System.String[] fields = new System.String[fieldCount];

                            for (int i = 0; i < fieldCount; i++)
                            {
                                number   += tvd.ReadVInt();
                                fields[i] = fieldInfos.FieldName(number);
                            }

                            // Compute position in the tvf file
                            position = 0;
                            long[] tvfPointers = new long[fieldCount];
                            for (int i = 0; i < fieldCount; i++)
                            {
                                position      += tvd.ReadVLong();
                                tvfPointers[i] = position;
                            }

                            result = ReadTermVectors(fields, tvfPointers);
                        }
                    }
                    catch (System.IO.IOException e)
                    {
                        Console.Error.Write(e.StackTrace);
                        Console.Error.Flush();
                    }
                }
                else
                {
                    System.Console.Out.WriteLine("No tvx file");
                }
                return(result);
            }
        }
コード例 #2
0
ファイル: SegmentTermEnum.cs プロジェクト: yonder/mono
        private Term ReadTerm()
        {
            int start       = input.ReadVInt();
            int length      = input.ReadVInt();
            int totalLength = start + length;

            if (buffer.Length < totalLength)
            {
                GrowBuffer(totalLength);
            }

            input.ReadChars(buffer, start, length);
            return(new Term(fieldInfos.FieldName(input.ReadVInt()), new System.String(buffer, 0, totalLength), false));
        }