search method

List<ZvecSearchHit> search({
  1. required List<double> query,
  2. int topK = 5,
  3. double? minScore,
  4. String? filter,
})

Implementation

List<ZvecSearchHit> search({
  required List<double> query,
  int topK = 5,
  double? minScore,
  String? filter,
}) {
  _ensureOpen();
  _ensureVectorMatchesDimension(query);

  final queryPointer = _toFloatPointer(query);
  final filterPointer = _nullableUtf8(filter);
  final results = calloc<Pointer<_NativeSearchResult>>();
  final outCount = calloc<Uint32>();

  try {
    final status = minScore == null
        ? _bindings.zvecSearch(
            _handle,
            queryPointer,
            query.length,
            topK,
            filterPointer,
            results,
            outCount,
          )
        : _bindings.zvecSearchWithThreshold(
            _handle,
            queryPointer,
            query.length,
            topK,
            minScore,
            filterPointer,
            results,
            outCount,
          );
    _throwIfFailed(status);
    return _readSearchResults(results.value, outCount.value);
  } finally {
    calloc.free(queryPointer);
    _freeNullableUtf8(filterPointer);
    calloc.free(results);
    calloc.free(outCount);
  }
}