mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2026-04-29 23:39:35 -05:00
68e4e81870
Bumps [github.com/blevesearch/bleve/v2](https://github.com/blevesearch/bleve) from 2.3.10 to 2.4.0. - [Release notes](https://github.com/blevesearch/bleve/releases) - [Commits](https://github.com/blevesearch/bleve/compare/v2.3.10...v2.4.0) --- updated-dependencies: - dependency-name: github.com/blevesearch/bleve/v2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
68 lines
1.6 KiB
Go
68 lines
1.6 KiB
Go
package faiss
|
|
|
|
/*
|
|
#include <faiss/c_api/impl/AuxIndexStructures_c.h>
|
|
*/
|
|
import "C"
|
|
import "runtime"
|
|
|
|
// IDSelector represents a set of IDs to remove.
|
|
type IDSelector struct {
|
|
sel *C.FaissIDSelector
|
|
}
|
|
|
|
// NewIDSelectorRange creates a selector that removes IDs on [imin, imax).
|
|
func NewIDSelectorRange(imin, imax int64) (*IDSelector, error) {
|
|
runtime.LockOSThread()
|
|
defer runtime.UnlockOSThread()
|
|
|
|
var sel *C.FaissIDSelectorRange
|
|
c := C.faiss_IDSelectorRange_new(&sel, C.idx_t(imin), C.idx_t(imax))
|
|
if c != 0 {
|
|
return nil, getLastError()
|
|
}
|
|
return &IDSelector{(*C.FaissIDSelector)(sel)}, nil
|
|
}
|
|
|
|
// NewIDSelectorBatch creates a new batch selector.
|
|
func NewIDSelectorBatch(indices []int64) (*IDSelector, error) {
|
|
runtime.LockOSThread()
|
|
defer runtime.UnlockOSThread()
|
|
|
|
var sel *C.FaissIDSelectorBatch
|
|
if c := C.faiss_IDSelectorBatch_new(
|
|
&sel,
|
|
C.size_t(len(indices)),
|
|
(*C.idx_t)(&indices[0]),
|
|
); c != 0 {
|
|
return nil, getLastError()
|
|
}
|
|
return &IDSelector{(*C.FaissIDSelector)(sel)}, nil
|
|
}
|
|
|
|
// NewIDSelectorNot creates a new Not selector, wrapped arround a
|
|
// batch selector, with the IDs in 'exclude'.
|
|
func NewIDSelectorNot(exclude []int64) (*IDSelector, error) {
|
|
runtime.LockOSThread()
|
|
defer runtime.UnlockOSThread()
|
|
|
|
batchSelector, err := NewIDSelectorBatch(exclude)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
var sel *C.FaissIDSelectorNot
|
|
if c := C.faiss_IDSelectorNot_new(
|
|
&sel,
|
|
batchSelector.sel,
|
|
); c != 0 {
|
|
return nil, getLastError()
|
|
}
|
|
return &IDSelector{(*C.FaissIDSelector)(sel)}, nil
|
|
}
|
|
|
|
// Delete frees the memory associated with s.
|
|
func (s *IDSelector) Delete() {
|
|
C.faiss_IDSelector_free(s.sel)
|
|
}
|