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); }
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); }
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); }
public void Can_persist_vectors() { const string key = "Key"; using var index = new LmdbIndex(_tempDir.NewDirectory()); Vector vector = VectorFrom(4, 5, 6); Assert.Equal(Math.Sqrt(77), vector.Magnitude); var addedVector = index.AddFieldVector(key, vector, CancellationToken.None); Assert.True(addedVector); var getByKey = index.GetFieldVectorByKey(key); Assert.NotNull(getByKey); Assert.Equal(Math.Sqrt(77), getByKey?.Magnitude); var getKeys = index.GetFieldVectorKeys().ToList(); Assert.Single(getKeys); Assert.Equal(getKeys[0], key); var removedVector = index.RemoveFieldVector(key, CancellationToken.None); Assert.True(removedVector); var noVector = index.GetFieldVectorByKey(key); Assert.Null(noVector); var noVectorKeys = index.GetFieldVectorKeys(CancellationToken.None); Assert.Empty(noVectorKeys); }
public void Can_persist_fields() { const string field = "Field"; using var index = new LmdbIndex(_tempDir.NewDirectory()); var addedField = index.AddField(field); Assert.True(addedField); var fields = index.GetFields(); Assert.NotNull(fields); Assert.Equal(field, fields.Single()); var removedField = index.RemoveField(field); Assert.True(removedField); var noFields = index.GetFields(); Assert.NotNull(fields); Assert.Empty(noFields); }