Cobb: 'searching recipes is a bit off. lets make that way way more on point. need to be the google of recipe searching.' Architecture: - New cauldron_recipe_index table mirrors enough of Mealie's recipe shape to fuzzy-rank locally without round-tripping. Migrations 008+009. - Refresh on first /recipes load + every 5 minutes + on-demand button. Single page-200 pull from Mealie covers Cobb's 226 recipes in one trip. - recipe_index.py — flatten_recipe(), refresh_household_index(), search_index(). Search algorithm (rapidfuzz): - Multi-field weighted: name×1.00, tags×0.85, cats×0.80, foods×0.70, ings×0.55, description×0.45 (max-of wins, not sum, to avoid noise spike) - Three scorers per field: WRatio (overall), partial_token_set_ratio (handles 'spag bol' → 'Spaghetti Bolognese'), token_set_ratio (order-independent) - Substring-of-query in title bonus +20 - Floor 50 to filter junk - Top-80 returned API: - /api/recipes.json now uses local index for both search and browse - /recipes route same — first-page server-render from index - POST /api/index/refresh — manual refresh button (admin-y) - ?q=... → ranked fuzzy results, paginated - no q → ordered browse from index, paginated, has_next via lookahead Performance: - Local index query: ~5ms for browse - Search across 226 rows × 6 fields × 3 scorers: ~60ms - Should feel instant compared to Mealie's network round-trip
7 lines
116 B
Text
7 lines
116 B
Text
Flask==3.0.3
|
|
requests==2.32.3
|
|
gunicorn==23.0.0
|
|
Authlib==1.3.2
|
|
PyMySQL==1.1.1
|
|
cryptography==43.0.3
|
|
rapidfuzz==3.10.1
|