public void Can_persist_inverted_index_entries() { using var lmdb = new LmdbIndex(_tempDir.NewDirectory()); var builder = new Builder(); builder.AddField("title"); builder.Add(new Document { { "id", "id" }, { "title", "test" }, { "body", "missing" } }).ConfigureAwait(false).GetAwaiter().GetResult(); Index index = builder.Build(); var firstKey = index.InvertedIndex.Keys.FirstOrDefault() ?? throw new InvalidOperationException(); Assert.NotNull(firstKey); var added = lmdb.AddInvertedIndexEntry(firstKey, index.InvertedIndex[firstKey], CancellationToken.None); Assert.True(added); var getInvertedIndexEntry = lmdb.GetInvertedIndexEntryByKey(firstKey); Assert.NotNull(getInvertedIndexEntry); var tokenSet = lmdb.IntersectTokenSets(index.TokenSet); Assert.Single(tokenSet.Edges); }
public async Task GlobalSetup() { _path = Guid.NewGuid().ToString(); var plain = await PlainIndex(); _lmdb = new LmdbIndex(_path); foreach (var field in plain.Fields) { _lmdb.AddField(field); } foreach (var(k, v) in plain.FieldVectors) { _lmdb.AddFieldVector(k, v); } foreach (var(k, v) in plain.InvertedIndex) { _lmdb.AddInvertedIndexEntry(k, v); } Index = new DelegatedIndex(_lmdb, plain.Pipeline); }
private DelegatedIndex CopyIndex(Lunr.Index index) { var path = _tempDir.NewDirectory(); var lmdb = new LmdbIndex(path); foreach (var field in index.Fields) { Assert.True(lmdb.AddField(field)); } foreach (var(k, v) in index.FieldVectors) { Assert.True(lmdb.AddFieldVector(k, v)); } foreach (var(k, v) in index.InvertedIndex) { Assert.True(lmdb.AddInvertedIndexEntry(k, v)); } var idx = new DelegatedIndex(lmdb, index.Pipeline); return(idx); }