Having had to create our own form of 'Elastic Search' for various Projects we decided to be done with it and create our own extension. You all know the difficulties with creating great search and how important it is to an application so hopefully you'll appreciate the effort that went in to this. And NO it was not all pumped out by A.I we had previously created dozens of incredibly complex Server Actions to do exactly this, and these were used as training input for our string of LLMs (we use several LLM's in parallel to ask questions among themselves) to formulate the best possible output. They'll keep arguing back and fourth until they agree and then we'll proceed to build the 'thing', just to give you some insight in to our methodology, if you were interested...
Wap-Lastic - Elastic Search for Node JS Projects!
Platform: Wappler Server Connect (Node)
In one line: elastic-style, relevance-ranked search for Wappler (tokenised terms, weighted columns, boost fields), without running Elasticsearch or hand-writing huge SQL actions.
The problem
Wappler makes it straightforward to query a database, but high-quality search (multiple words, different importance per column, boost fields, exclusions, sorting by relevance, pagination) quickly becomes a maintenance burden. Teams often end up with:
-
One huge Server Connect action full of raw SQL
-
Duplicated logic when a column is added or renamed
-
Poor matches when users type partial or reordered phrases (
fishing londonvsFishing shop london) -
Fragile front-end bindings tied to copy-pasted action structure
What Wap-Lastic does
Wap-Lastic is a reusable Server Connect extension that sits after your normal database query:
-
You keep using Wapplerās query builder for connection, tables, joins, and filters.
-
Wap-Lastic receives that result set, tokenises the userās search terms, scores each row using weights you define in the UI, applies optional boost columns, sorts, and paginates.
-
Each row gets
relevance_scoreandboosted_scorefor debugging or display.
You configure search in grids and data pickers, not by cloning a project-specific SQL monster.
Who itās for
-
Wappler developers building catalogues, directories, listings, or admin search
-
Teams that want relevance ranking without maintaining 500+ line actions
-
Projects that need flexible
$_GETbindings (any parameter name for terms, limit, offset) -
Anyone migrating from hand-rolled weighted SQL to something editable in the IDE
How itās useful day to day
| Benefit | Detail |
|---------|--------|
| Faster iteration | Add or reweight a column in a grid, not in nested SQL |
| Clearer APIs | Optional output column list; array response matches query-step bindings |
| Separation of concerns | SQL for āwhat rows are candidatesā; Wap-Lastic for āhow to rank themā |
| Portable | No hardcoded connection names, tables, or column names in the module |
| Two modes | In-memory scoring on query results (default), or generated MySQL SQL for scale |


