Skip to content

Commit 07e3bbf

Browse files
MB-65473: Adapt to change in bleve_index_api interface for VectorReader (#28)
Aligns with: - blevesearch/bleve_index_api#63 + blevesearch/bleve_index_api#66 - blevesearch/bleve#2169
1 parent fa08ef7 commit 07e3bbf

File tree

3 files changed

+32
-16
lines changed

3 files changed

+32
-16
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ module github.com/blevesearch/sear
33
go 1.21
44

55
require (
6-
github.com/blevesearch/bleve_index_api v1.2.4
6+
github.com/blevesearch/bleve_index_api v1.2.7
77
github.com/blevesearch/vellum v1.1.0
88
)
99

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
github.com/bits-and-blooms/bitset v1.2.0 h1:Kn4yilvwNtMACtf1eYDlG8H77R07mZSPbMjLyS07ChA=
22
github.com/bits-and-blooms/bitset v1.2.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA=
3-
github.com/blevesearch/bleve_index_api v1.2.4 h1:XRk+wWtbNZSxKvW2bNg4fUpoc3XQDD63krBzB45fJDY=
4-
github.com/blevesearch/bleve_index_api v1.2.4/go.mod h1:rKQDl4u51uwafZxFrPD1R7xFOwKnzZW7s/LSeK4lgo0=
3+
github.com/blevesearch/bleve_index_api v1.2.7 h1:c8r9vmbaYQroAMSGag7zq5gEVPiuXrUQDqfnj7uYZSY=
4+
github.com/blevesearch/bleve_index_api v1.2.7/go.mod h1:rKQDl4u51uwafZxFrPD1R7xFOwKnzZW7s/LSeK4lgo0=
55
github.com/blevesearch/mmap-go v1.0.4 h1:OVhDhT5B/M1HNPpYPBKIEJaD0F3Si+CrEKULGCDPWmc=
66
github.com/blevesearch/mmap-go v1.0.4/go.mod h1:EWmEAOmdAS9z/pi/+Toxu99DnsbhG1TIxUoRmJw/pSs=
77
github.com/blevesearch/vellum v1.1.0 h1:CinkGyIsgVlYf8Y2LUQHvdelgXr6PYuvoDIajq6yR9w=

vector.go

Lines changed: 29 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,36 @@ func (d *Document) interpretVectorIfApplicable(field index.Field) int {
3333
return 0
3434
}
3535

36+
type eligibleDocumentSelector struct {
37+
docNums []uint64
38+
}
39+
40+
func (eds *eligibleDocumentSelector) SegmentEligibleDocs(segmentID int) []uint64 {
41+
// segmentID not applicable for single doc index
42+
return eds.docNums
43+
}
44+
45+
func (eds *eligibleDocumentSelector) AddEligibleDocumentMatch(id index.IndexInternalID) error {
46+
if len(id) > 0 {
47+
eds.docNums = append(eds.docNums, 0)
48+
}
49+
50+
return nil
51+
}
52+
53+
func (r *Reader) NewEligibleDocumentSelector() index.EligibleDocumentSelector {
54+
return &eligibleDocumentSelector{}
55+
}
56+
3657
func (r *Reader) VectorReader(ctx context.Context, vector []float32,
37-
field string, k int64, searchParams json.RawMessage) (index.VectorReader, error) {
58+
field string, k int64, searchParams json.RawMessage,
59+
selector index.EligibleDocumentSelector) (index.VectorReader, error) {
60+
if selector != nil && len(selector.SegmentEligibleDocs(0)) == 0 {
61+
// if selector/filter is applicable but no eligible docs,
62+
// then current document does not qualify
63+
return NewVectorFieldReaderEmpty(), nil
64+
}
65+
3866
if r.s.doc == nil {
3967
return NewVectorFieldReaderEmpty(), nil
4068
}
@@ -55,18 +83,6 @@ func (r *Reader) VectorReader(ctx context.Context, vector []float32,
5583
return NewVectorFieldReaderMatch(dims), nil
5684
}
5785

58-
func (r *Reader) VectorReaderWithFilter(ctx context.Context, vector []float32,
59-
field string, k int64, searchParams json.RawMessage,
60-
filterIDs []index.IndexInternalID) (index.VectorReader, error) {
61-
// if no filterIDs, current document does not qualify (in the
62-
// single document index scenario)
63-
if len(filterIDs) == 0 {
64-
return NewVectorFieldReaderEmpty(), nil
65-
}
66-
67-
return r.VectorReader(ctx, vector, field, k, searchParams)
68-
}
69-
7086
// -----------------------------------------------------------------------------
7187

7288
type VectorFieldReader struct {

0 commit comments

Comments
 (0)