search method

Future<PagedList<SearchResult>> search(
  1. String query, {
  2. String contextFilter = '',
  3. String kindFilter = '',
  4. bool includeDeprecated = false,
  5. bool includeRevisionMetadata = false,
  6. bool includeArtifactMetadata = false,
  7. int? pageSize,
  8. String? cursor,
  9. double minScore = 0.0,
})
inherited

Full-text fuzzy search across items (typo-tolerant), mirroring Python's search.

Returns SearchResult entries (matched item + relevance score + matchedIn) ordered by relevance. contextFilter restricts to a kref prefix; kindFilter is an exact kind match; includeRevisionMetadata / includeArtifactMetadata widen the search; minScore filters by relevance (0.0-1.0); pageSize/cursor paginate.

Implementation

Future<PagedList<SearchResult>> search(
  String query, {
  String contextFilter = '',
  String kindFilter = '',
  bool includeDeprecated = false,
  bool includeRevisionMetadata = false,
  bool includeArtifactMetadata = false,
  int? pageSize,
  String? cursor,
  double minScore = 0.0,
}) async {
  final request =
      SearchRequest()
        ..query = query
        ..contextFilter = contextFilter
        ..kindFilter = kindFilter
        ..includeDeprecated = includeDeprecated
        ..includeRevisionMetadata = includeRevisionMetadata
        ..includeArtifactMetadata = includeArtifactMetadata
        ..minScore = minScore;
  if (pageSize != null || cursor != null) {
    request.pagination =
        PaginationRequest()
          ..pageSize = pageSize ?? 100
          ..cursor = cursor ?? '';
  }

  final response = await stub.search(request, options: callOptions);

  return PagedList(
    response.results,
    nextCursor:
        response.hasPagination() ? response.pagination.nextCursor : null,
    totalCount:
        response.hasPagination() ? response.pagination.totalCount : null,
  );
}