mattcasters opened a new pull request, #7757:
URL: https://github.com/apache/hop/pull/7757

   ## Summary
   
   Fixes [#7756](https://github.com/apache/hop/issues/7756): Hop Gui Search 
Everywhere could hang or OOM when a project contained large CSV/JSON (or other 
text) files full of common terms (e.g. typing `address`). Live search built 
unbounded line-level hits on the UI thread after short prefixes.
   
   This change hardens GUI search and makes the limits configurable in the GUI.
   
   ### Behavior
   
   - **Min query length for content** (default 3): names still match for 
shorter queries; text-file/field content waits until the query is long enough 
so short keystrokes do not flood results.
   - **Skip oversized text files** (default 1 MB): large data files are not 
loaded for GUI content search. Use dedicated tools or `hop-search` for 
million-row CSV/JSON.
   - **Hard caps**: max total results (default 500) and max matches per text 
file (default 20), applied during analysis—not only when painting the tree.
   - **Background search + cancel**: analysis runs off the UI thread; stale 
generations are discarded so typing stays responsive.
   - **Optional exclude of project text files** while keeping open text files 
searchable.
   - **Search as you type** toggle + configurable debounce; Enter always 
searches immediately.
   
   ### Configuration (GUI)
   
   All options are available from:
   
   1. The **gear** on Search Everywhere / search results panel → Search 
settings dialog  
   2. **Configuration** perspective → Plugin options → **Search**
   
   Stored under the `search` key in `hop-config.json`.
   
   ### Docs
   
   User manual Search page rewritten for Search Everywhere (no longer described 
as a left-toolbar perspective), settings table + screenshot, and cross-links 
from perspectives / Hop Gui index / Configuration.
   
   CLI `hop search` is unchanged.
   
   ## Test plan
   
   - [ ] Open Search Everywhere (`CTRL-F`) in a project with large CSV/JSON 
containing a common word (e.g. `address`).
   - [ ] Type the full word character by character; UI stays responsive; short 
prefixes only hit names (default min length 3).
   - [ ] Confirm large files are skipped (max text file size MB setting) and 
results are capped; footer/status mentions capped / min-length when relevant.
   - [ ] Gear → change limits / turn off search-as-you-type / exclude project 
text files; OK persists and next search reflects settings.
   - [ ] Configuration perspective → Search shows the same options and saves.
   - [ ] *Show all results* uses the same limits and does not OOM.
   - [ ] Unit tests: `SearchLimitsTest`, 
`TextFileContentSearchableAnalyserTest`, `HopGuiSearchHelperTest`.
   - [ ] Spotless / compile clean for `ui` module.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to