public DictionaryIndex(int rareWordThreshold)
 {
     wordIndex              = new Dictionary <T, RangePostingsList>();
     rareWordIndex          = new Dictionary <T, IList <uint> >();
     allDocuments           = new RangePostingsList();
     this.rareWordThreshold = rareWordThreshold;
 }
        public void EmptyRangeTest()
        {
            var range = new RangePostingsList();

            Assert.Empty(range);
            Assert.Equal(Array.Empty <DocumentId>(), range.ToArray());
        }
        public void RangeWithRepeatingDocIdTest()
        {
            var range = new RangePostingsList
            {
                0, 1, 1, 1, 2, 3, 10, 11, 11, 11, 12
            };

            Assert.Equal(7, range.Count);
            Assert.Equal(
                new uint[] { 0, 1, 2, 3, 10, 11, 12 }.Select(u => new DocumentId(u)).ToArray(),
                range.ToArray());
        }
예제 #4
0
        public void IndexTerm(DocumentId id, string word, int position)
        {
            builder.TryGetValue(word, out var blockList);

            if (blockList == null)
            {
                blockList = new RangePostingsList();
                builder.Insert(word, blockList);
            }

            blockList.Add(id);
            allDocuments.Add(id);
        }
        public void RangeReadWriteTest()
        {
            var stream = new MemoryStream();

            var rangePostings = new RangePostingsList()
            {
                0, 1, 2, 10, 11, 12, 13, 14, 15, 100, 111
            };

            using var writer = new PostingsListWriter(stream);
            writer.Write(rangePostings);

            stream.Seek(0, SeekOrigin.Begin);

            using var reader = new PostingsListReader(stream, leaveOpen: false);
            var count        = reader.ReadCount(0);
            var deserialized = reader.Read(0);

            Assert.Equal(rangePostings.Count, count);
            Assert.True(deserialized is RangePostingsList);
            Assert.Equal(rangePostings, deserialized);
        }
예제 #6
0
 public DawgBuildableIndex()
 {
     builder      = new DawgBuilder <RangePostingsList>();
     allDocuments = new RangePostingsList();
 }
예제 #7
0
 private static void SerializePayload(BinaryWriter writer, RangePostingsList payload)
 {
     Serializer.SerializeWithLengthPrefix(writer.BaseStream, payload, PrefixStyle.Base128);
 }
예제 #8
0
 public DawgSearchableIndex(Dawg <RangePostingsList> dawg, RangePostingsList allDocuments)
 {
     this.dawg         = dawg;
     this.allDocuments = allDocuments;
 }