Repository navigation
Document native full-text search - #691
kylebernhardy wants to merge 26 commits into
Conversation
There was a problem hiding this comment.
Code Review
This pull request introduces comprehensive documentation for the new native BM25-ranked Full-Text Search feature in Harper v5.3.0, including a new developer guide, configuration references, querying guides, and updates to existing database, REST, GraphQL, and Operations API documentation. The review feedback highlights several style and formatting improvements: separating a critical security warning into distinct sentences for better visibility, replacing the <VersionBadge> component with plain text when used mid-sentence in prose, and replacing em dashes with colons as field separators in Markdown lists.
cb1kenobi
left a comment
There was a problem hiding this comment.
Native full-text documentation is consistent on authoritative versus derived state, REST and JavaScript permission boundaries, rebuild and lag error codes, and prefix-window limits. Existing inline comments already cover VersionBadge placement, em dashes, and the learn-guide security-warning wording. Nothing remaining on the changed lines is a confirmed blocking defect.
—
Reviewed 45c1c5d
45c1c5d to
6855bed
Compare
cb1kenobi
left a comment
There was a problem hiding this comment.
The field-only FullText schema, REST versus trusted in-process permission boundary, rebuild and lag error codes, and backup or log-retention recovery guidance are consistent across the new pages and updated API references. Existing discussion already covers VersionBadge placement, em dashes, and the older learn-guide warning wording. Nothing remaining on the changed lines is a confirmed blocking defect.
—
Reviewed 6855bed
kriszyp
left a comment
There was a problem hiding this comment.
The Resource code example basically ignores all of our best practices. It should:
- Not use loadAsInstace
- Use static methods
- Don't accumulate search results in an array (memory hazard, slower latency).
And I don't know why you would need to set audit: true, that's the default.
🤖 Reviewed with Claude
|
Thanks, Kris. All four points are addressed:
The accuracy pass also tightened the audit migration path, all five readiness states, write backpressure, rebuild and replica behavior, Blob limits, and the handling of derived Tantivy files. Validation is green: formatting, typecheck, workflow tests, production docs build (411 documents), 11 focused Harper integration tests, and 96 focused Harper unit tests. Comment generated by kAIle (GPT-6 Astra) |
🚀 Preview DeploymentYour preview deployment is ready! 🔗 Preview URL: https://preview.harper-documentation.harperfabric.com/pr-691 This preview will update automatically when you push new commits. |
|
Executable coverage for the published schema, JavaScript, REST, and Operations API examples is now in Harper PR #2915, "Test documented full-text examples". The test fixture also pins permissions, index coverage, reduced-index metadata, highlight limits, synonyms, multiple indexes, and Blob sources.\n\nComment generated by kAIle (GPT-6 Astra) |
cb1kenobi
left a comment
There was a problem hiding this comment.
The filter-metadata docs stay consistent with the query-only FullText field, permission boundary, and rebuild or restore contracts. Open threads already cover the merged duplicate 5.3 section, audit-default wording, freshness example buffering, describe_table layout, filter staleness, and the oversized filter-string gap. No new blocking defect was confirmed on the changed lines.
—
Reviewed a035305
|
Quick nudge; this PR has a lot of unresolved review comments already. @kylebernhardy can you take another pass at it and request fresh reviews from Kris and Chris when its ready for review again? Thank you! |
🚀 Preview DeploymentYour preview deployment is ready! 🔗 Preview URL: https://preview.harper-documentation.harperfabric.com/pr-691 This preview will update automatically when you push new commits. |
|
Thanks for the nudge, Ethan. The remaining inline concerns have now been checked against the current core implementation, addressed, and resolved with individual replies. The guide fixes cover audit-default wording, freshness iteration without buffering, generic describe_table layout, unsupported filter metadata, duplicate release notes, POST versus GET, highlighting, Tantivy and obsolete prerelease guidance. The final cleanup also clarifies streaming errors and count behavior and removes unrelated formatting churn. The individual and combined documentation builds pass (414 documents), as do typecheck and formatting. Fresh core verification passes 119 focused tests (two LMDB-only skips in RocksDB mode) and 21 deployed full-text/example tests without skips. Claude and Cursor completed another outside review; its paired-reference findings remain covered by Document full-text paging and configurable search limits, which this guide explicitly depends on. The older changes-requested review still needs a fresh human assessment of the updated head. Comment generated by kAIle (GPT-6) |
🚀 Preview DeploymentYour preview deployment is ready! 🔗 Preview URL: https://preview.harper-documentation.harperfabric.com/pr-691 This preview will update automatically when you push new commits. |
⊙ Problem
Document native full-text search for Harper 5.3 while distinguishing the final v5.4 paging behavior. The older text incorrectly presented the 100-record prefix window as a current total-result cutoff and included unsupported filterFields schema examples.
Companion to Complete native full-text indexing and search, with executable examples in Test documented full-text examples. Document full-text paging and configurable search limits owns the detailed v5.4 request limits and restart guidance.
💡 Solution
Keep the native declaration/query guide here and the work-budget reference in the paging companion. Before v5.4, prefix and fuzzy-prefix queries restrict offset plus limit to 100. In v5.4, bounded queries fetch more ranked batches using one reader per request, count eligible records after source/version checks and filters, and report budget exhaustion as an error. Separate offset requests have no retained search or snapshot.
⚖️ Alternatives
This reconciliation updates the existing guides rather than adding another paging page or copying numeric defaults. The configuration references remain the owners of defaults and restart requirements. It changes documentation only; no runtime API or native implementation changes. Unsupported filterFields examples were removed after checking both released core tags and the final paging parser, rather than inventing a version badge for an unimplemented option.
🔧 Changes
Paging compatibility
The overview, querying reference, REST reference, query-optimization introduction and product-catalog tutorial now agree on that boundary. The query-planning introduction moved away from the companion's v5.4 work-budget section so both branches merge cleanly. Deep-offset cost guidance is explicit, and the generic condition table links to the existing freshness-control owner. The branch was refreshed from main, preserving its backup preflight and interrupted-restore guidance alongside the full-text rebuild note. Duplicate 5.3 release-note sections were folded into one, and the new paging section distinguishes 400 budget limits, 503 execution limits and terminal streaming errors.
✅ Verification
The final guide head and paging companion merge cleanly and pass a combined 414-document production build, typecheck and formatting. Fresh unchanged-core verification passes 119 focused schema/runtime/query tests (two LMDB-only skips in RocksDB mode) and all 21 deployed full-text/example integration tests.
Comment generated by kAIle (GPT-6)
Release target: main — native full-text guide with version-qualified v5.4 paging.
Related PRs: #739 overlaps (Document full-text paging and configurable search limits, coordinated paging references), 11 others independent
Publication dependency: Document full-text paging and configurable search limits supplies configuration and 5.4 release-note owners before this native guide. The combined tree is the verified publication result. The one-way companion status waits for that PR; neither PR is a standalone replacement for the other. No merge or auto-merge is authorized.
Depends-on: #739
Complexity: medium
Review-Coverage: authored=codex; ran=claude,cursor-composer,cursor-grok; adjudicated=domain; blocked=gemini(auth); declined=cursor-kimi,cursor-muse; rounds=14; full=8 @ 51713cc
Review-Attention: study ~9m (decisions: do-less-alternative, authorization-opt-in, paging-model, budget-failure-contract, audit-activation-rule; raised: open major) @ 51713cc