@@ -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+
3657func (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
7288type VectorFieldReader struct {
0 commit comments