HarperFast / HarperFast/harper
Expose full-text conditions and $score through Table.search and REST
- 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
Assessment
This issue has not been assessed yet.