feat(search): implement search with tantivy#3831
Merged
goranmoomin merged 4 commits intomainfrom Feb 11, 2026
Merged
Conversation
✅ Deploy Preview for hyprnote-storybook ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
✅ Deploy Preview for hyprnote ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
3 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
This is a preliminary implementation of implementing search with tantivy, but reusing the same infrastructure of orama. It already provides much better results for korean, hence the PR.
I've also cherrypicked the one commit from PR #3825 (I've closed that PR).
Tantivy apparently requires
.commit()calls for the results to be reflected, and the Rust side isn't running in the main thread anyways, so I just updated the code to commit on every single tantivy update.Limitations & Possible Improvements
The implementation is currently sending the entire document via the tauri bridge for now when initializing.
If we decide that we want to have the rust side handle more parts of the search, i think the best way forward would be: have rust maintain the index, parsing the sessions from the files and so on, and tinybase listeners will trigger an update by just sending the session id only (instead of the current model where we send the entire content from the JS side) (and might additionally use directory watching as well to maintain the index).
This might be beneficial in performance, but it does mean that we will have to implement two different versions of session parsing code, one in JS and one in Rust. Should weigh tradeoffs.