# `Milvex.QueryResult`

Parser for Milvus query results.

Converts the columnar FieldData format from Milvus QueryResults
into row-oriented Elixir maps for easy consumption.

## Examples

    # Parse from proto
    {:ok, result} = QueryResult.from_proto(query_results)

    # Access results
    result.rows             # List of row maps
    result.collection_name  # Collection queried
    result.output_fields    # Field names returned

    # Each row is a map
    row = hd(result.rows)
    row.id     # Primary key value
    row.title  # Field value

# `t`

```elixir
@type t() :: %Milvex.QueryResult{
  collection_name: String.t(),
  output_fields: [String.t()],
  primary_field_name: String.t() | nil,
  rows: [map()]
}
```

# `empty?`

```elixir
@spec empty?(t()) :: boolean()
```

Checks if the result is empty.

# `from_proto`

```elixir
@spec from_proto(Milvex.Milvus.Proto.Milvus.QueryResults.t()) :: t()
```

Parses a QueryResults proto into a QueryResult struct.

Converts columnar FieldData to row-oriented maps.

## Parameters
  - `proto` - The QueryResults protobuf struct

# `get_column`

```elixir
@spec get_column(t(), String.t() | atom()) :: [term()]
```

Gets all values for a specific field across all rows.

# `get_row`

```elixir
@spec get_row(t(), non_neg_integer()) :: map() | nil
```

Gets a specific row by index (0-based).

# `num_rows`

```elixir
@spec num_rows(t()) :: non_neg_integer()
```

Returns the number of rows in the result.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
