Skip to content

Commit 734aeea

Browse files
MB-65473: [BP] Adapt to change in bleve_index_api interface for VectorReader
Backports #28
1 parent 992ac44 commit 734aeea

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.1.12
6+
github.com/blevesearch/bleve_index_api v1.1.13-0.20250408143424-7650bf7414fb
77
github.com/blevesearch/vellum v1.0.10
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.1.12 h1:P4bw9/G/5rulOF7SJ9l4FsDoo7UFJ+5kexNy1RXfegY=
4-
github.com/blevesearch/bleve_index_api v1.1.12/go.mod h1:PbcwjIcRmjhGbkS/lJCpfgVSMROV6TRubGGAODaK1W8=
3+
github.com/blevesearch/bleve_index_api v1.1.13-0.20250408143424-7650bf7414fb h1:nXRaYG2FoHGWxc6wTq6e6zlo7UNQRtQggpvjjzffj7c=
4+
github.com/blevesearch/bleve_index_api v1.1.13-0.20250408143424-7650bf7414fb/go.mod h1:PbcwjIcRmjhGbkS/lJCpfgVSMROV6TRubGGAODaK1W8=
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.0.10 h1:HGPJDT2bTva12hrHepVT3rOyIKFFF4t7Gf6yMxyMIPI=

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)