Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
runs-on: ${{ matrix.platform }}
steps:
- name: Install Go
uses: actions/setup-go@v1
uses: actions/setup-go@v5
with:
go-version: ${{ matrix.go-version }}
- name: Checkout code
Expand Down
36 changes: 33 additions & 3 deletions vector.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,11 @@ type eligibleDocumentSelector struct {
docNums []uint64
}

func (eds *eligibleDocumentSelector) SegmentEligibleDocs(segmentID int) []uint64 {
func (eds *eligibleDocumentSelector) SegmentEligibleDocuments(segmentID int) index.EligibleDocumentList {
// segmentID not applicable for single doc index
return eds.docNums
return &eligibleDocumentList{
docNums: eds.docNums,
}
}

func (eds *eligibleDocumentSelector) AddEligibleDocumentMatch(id index.IndexInternalID) error {
Expand All @@ -50,14 +52,42 @@ func (eds *eligibleDocumentSelector) AddEligibleDocumentMatch(id index.IndexInte
return nil
}

type eligibleDocumentList struct {
docNums []uint64
}

func (edl *eligibleDocumentList) Count() uint64 {
return uint64(len(edl.docNums))
}

func (edl *eligibleDocumentList) Iterator() index.EligibleDocumentIterator {
return &eligibleDocumentIterator{
docNums: edl.docNums,
}
}

type eligibleDocumentIterator struct {
docNums []uint64
idx int
}

func (edi *eligibleDocumentIterator) Next() (uint64, bool) {
if edi.idx >= len(edi.docNums) {
return 0, false
}
rv := edi.docNums[edi.idx]
edi.idx++
return rv, true
}

func (r *Reader) NewEligibleDocumentSelector() index.EligibleDocumentSelector {
return &eligibleDocumentSelector{}
}

func (r *Reader) VectorReader(ctx context.Context, vector []float32,
field string, k int64, searchParams json.RawMessage,
selector index.EligibleDocumentSelector) (index.VectorReader, error) {
if selector != nil && len(selector.SegmentEligibleDocs(0)) == 0 {
if selector != nil && selector.SegmentEligibleDocuments(0).Count() == 0 {
// if selector/filter is applicable but no eligible docs,
// then current document does not qualify
return NewVectorFieldReaderEmpty(), nil
Expand Down
Loading