keywordSearch
Performs full-text keyword search across entries in a dataset via the data-cluster's search API. Uses PostgreSQL to_tsvector / to_tsquery for stemming, stop-word removal, and tf-idf relevance ranking. Results are filtered client-side by min_score after the API response is received.
Parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
query | string | Yes | — | Search query text. Minimum length: 1 |
dataset_id | integer | Yes | — | ID of the dataset to search. Must be greater than 0 |
limit | integer | No | 20 | Maximum number of results to return. Range: 1–100 |
offset | integer | No | 0 | Pagination offset |
tags | string[] | No | [] | Filter results by entry tags |
status | string? | No | null | Filter results by entry status |
mime_types | string[] | No | [] | Filter results by MIME types |
min_score | float | No | 0.0 | Minimum relevance score to include. Range: 0.0–1.0. Applied both server-side and as a client-side post-filter |
Output
| Field | Type | Description |
|---|---|---|
results | KeywordSearchHit[] | Search result hits, filtered by min_score |
total_count | integer | Total number of matches found (before limit/offset) |
has_more | boolean | Whether additional results exist beyond the current page |
query | string | The original query text |
execution_time_ms | float | Wall-clock time for the operation in milliseconds |
results_returned | integer | Number of hits in results after client-side score filtering |
Each KeywordSearchHit:
| Field | Type | Description |
|---|---|---|
entry_id | integer | Entry ID |
dataset_id | integer | Dataset ID |
name | string | Entry name |
title | string | Document title |
description | string | Document description |
score | float | Relevance ranking score |
highlighted | object? | Fields with matched terms wrapped in <mark> tags |
metadata | object? | Additional metadata such as mime_type, status, tags, created_at |
Example
{
"id": "keywordSearch",
"type": "keywordSearch",
"data": {
"label": "Keyword Search",
"isExecuted": false,
"handles": ["inputs", "outputs"],
"schema": {},
"params": {
"query": { "value": "{{ $input.query }}", "isExpression": true, "isAttachedToInputNode": false },
"dataset_id": { "value": 42, "isExpression": false, "isAttachedToInputNode": false },
"limit": { "value": 10, "isExpression": false, "isAttachedToInputNode": false },
"min_score": { "value": 0.3, "isExpression": false, "isAttachedToInputNode": false }
},
"inputs": [], "outputs": [], "errors": []
},
"position": { "x": 0, "y": 0 },
"isSelected": false,
"isDragging": false
}