Code reference detail
fuzzy_search.rs
crates/reqlan-analytical/tests/fuzzy_search.rs
| Idea | Status | Tags | Summary | Katz |
|---|---|---|---|---|
| analytical_rust_port | in-progress | Port ["../core-architecture.rq".analytical_package] to Rust: lexer, parser ( index path ), extractor, SQLite index, search, and export. `@reqlan/analytical` remains the published JS facade ( `createAnalysisRuntime` / `AnalysisApi` / Zustand host state ). Native work lives in a `crates/` Cargo workspace and ships as per-architecture binaries per [distribution.rust_binary_distribution]. The editor language server is [lsp_rust.language_server_rust]. This analytical port does not replace that process. Component plans: [rust_crate_layout], [lexer_rust], [parser_rust], [parser_align], [indexer.indexer_rust], [search_rust], [export_rust], [native_bridge], [cutover]. | 0.243 | |
| search_rust | done | Port [search_reqs.fuzzy_search] ( separator-insensitive ranking ), [search_reqs.contextual_search] ( hop-distance rerank ), and [search_reqs.semantic_search] into `reqlan-search`. Same `AnalysisApi.searchRequirements` / `--context` contract ( [cli.commands] ). Activity-bar idea search uses `WorkspaceIndexRuntime.fuzzy_search` / napi `NativeWorkspaceIndex.fuzzySearch` so ranking stays next to rusqlite and only capped hits cross into JS. Mixed list includes indexed `.rq` file-name hits ( `kind` `file` ) and pages with `offset` / `limit` ( `truncated` ). Client-side highlight helpers used by webviews may stay in the TS `./fuzzy-search` export until a shared WASM / JS copy is needed. | 0.137 | |
| file_search | done | Rank indexed `.rq` files and comment-bearing code files by basename, stem, and path using the same separator-insensitive matching as [fuzzy_search] / [fuzzy_search_whitespace]. Hits use kind `file`; id is the indexed file URI; name is the basename; line start is 0. Empty query does not dump the file catalog. Mixed into [fuzzy_search] so one list ranks ideas and files together. Code files are those persisted by ["../indexer/indexer.rq".index_code_files]. Surfaces: native `fuzzy_search` via [native_workspace_index], ["../extension/local-context/activitybar-panels/search.rq".search_pane_file_hits]. ["../cli/click.rq".click_input] uses this mix when click has no exact match. | 0.244 | |
| fuzzy_search | done | Quick ranked idea search by name, summary, and tags. Separator and word-order behaviour: [fuzzy_search_whitespace]. Also supports prefix, substring, and character-subsequence ( fuzzy ) ranking. Skips ideaset container rows; empty query returns all non-ideaset ideas ( callers may require a non-empty query ). Ranking engine: ["./rust_port.rq".search_rust] `reqlan-search` ( `fuzzy_search` / `search_ideas` ). Also returns [file_search] hits mixed into the same ranked list ( kind `file` ). Pagination: [fuzzy_search_pages]. Activity-bar search calls [native_workspace_index] `NativeWorkspaceIndex.fuzzySearch` so the host never copies the idea catalog into JS. Client-side highlight helpers stay in [fuzzy_search_impl]. | 0.268 | |
| search | Search over the requirement graph — find ideas by name, body, tags, and related signals. Surfaces: [fuzzy_search], [file_search], [contextual_search], [semantic_search], [katz_search]. Consumed by CLI `reqlan search`, MCP / chat tools, Ideas Summary, and the activity-bar search pane. Rust ranking engine: ["./rust_port.rq".search_rust]. | 0.046 | ||
| search_pane | done | Workspace idea search in the activity bar — find rq ideas by name, summary, or tags without leaving the sidebar. Complements the modal from [commands.search_code_actions]; this pane stays open for repeated lookups and inserts. Implemented by [SearchPane] under [CollapsiblePane]; host wire in [activity_bar_webview] / [activity_bar_messages] / [app_state]. [search_pane_query] [search_pane_layout] [search_pane_results] [search_pane_open_live_file] [search_pane_load_more] [search_pane_file_hits] [search_pane_insert_reference] [search_add_to_chat] [search_pane_advanced] [search_pane_empty_query] [search_pane_scoped_status] [search_progress] [search_pane_seed] [search_pane_match_highlighting] | 0.176 | |
| search_pane_query | done | [search_pane] search input posts a debounced host query. Ranking uses [core_search.fuzzy_search] in the native search module ( `NativeWorkspaceIndex.fuzzySearch` ); separator-insensitive `_` / `-` / `...` / whitespace. File-name hits: [search_pane_file_hits] / [core_search.file_search]. Pages: [search_pane_load_more] / [core_search.fuzzy_search_pages]. Highlighting stays in the TS `./fuzzy-search` export. | 0.063 | |
| definition | The indexer should live in the [core_analysis] module. On-disk schema: [sqlite_schema.ideas_index_sqlite] and [diagnostics_schema.diagnostics_sqlite]. Layout and WAL sidecars: [sidecars.reqlan_directory_layout]. Consumers: [consumers.index_consumers] ( extends [consumption] ). Sequencing and triggers: [sequencing.index_sequencing] ( extends [triggers] ). Cache reuse opportunities: [cache_reuse.index_cache_reuse]. | 0.040 | ||
| index_code_files | done | Index non- `.rq` source files that contain [comment_reference] ( `rq:[idea]` / `rq:["path".idea]` ). The same directory scan records allowlisted text paths ( respecting `.rqignore`, [app_memory_doc.binary_ignore], [app_memory_doc.commentless_file_ignore], and nested child bases ). Content reads use that list. They are not a second directory walk. [app_memory_doc.text_prefix_skip] skips non-text before a full read. Binary files stay out unless a negation such as `!*.bin` opts them in. The walk cheap-filters on `rq:`, and persists matching files as documents plus `comment_link` edges. Edge shape: source = referenced idea, `target_file` = code file URI, kind `comment_link` ( no synthetic file ideas ). Reindex of a `.rq` file updates kept ideas in place, so their comment links stay. Deletion of a removed idea cascades to its links. Code documents are re-linked only when the set of idea names in that `.rq` file changes, because links resolve on names only. A body edit must not read the code files again. Watcher + idle stale check cover code documents as well as `.rq` files ( [triggers], [nonblocking_index] ). Consumers: [graph_analysers.file_related_requirements], ["../core_analysis/search.rq".file_search], ["../core_analysis/html_export.rq".html_export_code_reference_pages], Ideas Summary comment-reference rows, local graph ( idea → external file node ), ["../cli/click.rq".click_code_file]. See [index_comment_reference_inclusion], ["../ontology.rq".referenced_files]. | 0.394 |
Reference labels
"../../../../crates/reqlan-analytical/tests/fuzzy_search.rs:workspace_index_fuzzy_search_ranks_without_exporting_catalog", "../../crates/reqlan-analytical/tests/fuzzy_search.rs:workspace_index_fuzzy_search_includes_comment_code_files", "../../crates/reqlan-analytical/tests/fuzzy_search.rs:workspace_index_fuzzy_search_includes_file_name_hits", "../../crates/reqlan-analytical/tests/fuzzy_search.rs:workspace_index_fuzzy_search_ranks_without_exporting_catalog", ../../../../crates/reqlan-analytical/tests/fuzzy_search.rs:workspace_index_fuzzy_search_ranks_without_exporting_catalog, ../../crates/reqlan-analytical/tests/fuzzy_search.rs:workspace_index_fuzzy_search_includes_comment_code_files, ../../crates/reqlan-analytical/tests/fuzzy_search.rs:workspace_index_fuzzy_search_includes_file_name_hits, ../../crates/reqlan-analytical/tests/fuzzy_search.rs:workspace_index_fuzzy_search_ranks_without_exporting_catalog