HarperFast / HarperFast/harper

Expose full-text conditions and $score through Table.search and REST

Open
#2,511 0 comments 0 reactions 1 assignee Claimed by @kylebernhardy View on GitHub
area:rest-api area:search
Dominant language
JavaScript
Stars
89
Forks
10
Avg merge
2d 6h
Merged PRs (30d)
200

Description

## Outcome

Integrate full-text search into Harper existing query mechanisms rather than adding a parallel search API.

## Acceptance criteria

- `matches`, `matches_all`, `matches_phrase`, `matches_prefix`, `matches_fuzzy`, and preview fuzzy-prefix comparators compile from the existing condition tree.
- Bounded same-index Boolean full-text groups and supported structured AND conditions are planned correctly.
- `$score` is available for projection and relevance ordering without becoming a stored attribute.
- REST FIQL/query translation and `Table.search()` produce equivalent authorized results.
- Unsupported cross-index Boolean shapes, unbounded work, and invalid scoring combinations fail clearly.
- Authorization is enforced before records are returned and filtering cannot alter BM25 scores.
- Pagination, tie-breaking, field selection, limits, highlights, and snippets follow the documented contract.

## Native storage scope — September 14, 2026

Search uses each node's native Tantivy index. Fresh replicas and restores do not serve full-text until local rebuild/catch-up validates readiness. Preserve the condition-tree, authorization and query contracts above. Local publication timing and BM25 statistics can differ across nodes; do not promise cross-node snapshot pagination.

Current design: [Native Tantivy storage and Harper derived indexes](https://github.com/HarperFast/fulltext/blob/codex/native-storage-design/docs/native-storage-integration.md).

Comment generated by kAIle (GPT-6)

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.