Replies: 1 comment
-
|
Moving this to a discussion since this isn't describing a bug |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
First Check
What is the issue you are experiencing?
Where
Both:
https://docs.mealie.io/documentation/getting-started/introduction/
https://docs.mealie.io/documentation/getting-started/faq/
Both reference "Smart search, mix & match of 'quoted literal searches' and keyword search" and the FAQ adds that fuzzy search is enabled on Postgres backend.
What's missing
The current copy doesn't explain what "mix & match" means in practice. Empirical behaviour on v3.16.0 / Postgres backend:
Multi-word queries: do AND-style intersection across all text fields, with each token fuzzy-matched independently
Quoted strings ("foo bar"): matched as exact phrases including word order — NOT as token-level exact matches
Boolean operators (AND, OR): treated as literal search tokens; no boolean operator support
Fuzzy matching: enabled by default on Postgres, can be aggressive on short tokens (e.g. "lemon" can match "leek" in some queries — see Discussion #2335 for details)
A user reading the current documentation reasonably expects "chicken" "lemon" to find recipes containing both words anywhere — but the current implementation treats it as searching for the literal phrase "chicken" "lemon" (zero results in most libraries).
Suggested fix
Update both pages to describe actual behaviour. Something like:
Search
The search bar matches across recipe names, descriptions, ingredients, and instructions:
Multi-word queries (e.g. chicken lemon): finds recipes where every token appears somewhere in the recipe text. Each token is fuzzy-matched independently (Postgres backend) or exact-matched (SQLite backend).
Quoted strings (e.g. "lemon chicken"): finds recipes containing that exact phrase in that word order.
Filters (Categories, Tags, Tools, Foods): apply on top of search and AND together.
Fuzzy matching is currently only available with a Postgres backend.
Steps to Reproduce
Reproduction
Fresh v3.16.0 install with Postgres backend
Add a few hundred recipes covering varied subjects
Try "chicken lemon" (literally, with quotes) → 0 or near-0 results unless a recipe has that exact phrase in that order
Documentation implies this should "mix & match" — actual behaviour: exact phrase including word order
Please provide relevant logs
Captured logs
Mealie container log output captured while typing each query into the search bar (timestamps and boilerplate query params trimmed for readability):
Confirms: the UI sends the user input as a single
searchquery parameter to/api/recipes. There's no client-side splitting or boolean handling — whatever logic exists is server-side. The quoted variant is sent through as%22...%22(literal quote characters in the search string).API result counts (for reference)
Direct hits against
/api/recipes?search=...against ~4,650-recipe library:chicken lemon(387) being smaller than both single-token totals indicates the backend does AND-style intersection across tokens, but this isn't documented anywhere user-facing.Mealie Version
Environment: v3.16.0, Postgres 16.
Deployment
Other (please specify below)
Additional Deployment Details
Docker via OMV
Beta Was this translation helpful? Give feedback.
All reactions