Website Review
What is Recipe Search with Typesense?
Recipe Search with Typesense is a demo search experience that lets you query roughly 2 million recipes instantly, with typo tolerance and ingredient-based filtering. It's a showcase of the Typesense search engine rather than a full cooking app: you type something like "pizza," "kale" or "low carb," and results appear as you type. The recipe data comes from the RecipeNLG cooking dataset, and the interface is built with the Typesense Adapter for InstantSearch.js.
What you can actually do with it
- Search by dish, ingredient or dietary label — the page suggests examples such as Pizza, Pineapple, Kale, Oregano, Salad, Curry, Healthy, Keto, Low Carb, Steamed and Fried.
- Refine results by filtering on ingredients.
- See how a typo-tolerant search behaves in practice, which is useful if you're evaluating Typesense as an alternative to Algolia or ElasticSearch.
Who it's for
- Developers comparing hosted search options who want a working reference before committing.
- Anyone curious how fast a large recipe corpus can be searched without a "submit" button.
- People looking for recipe inspiration, though this is a side effect rather than the main purpose.
Trade-offs to keep in mind
It's a technical demonstration, so expect search-quality quirks rather than editorial curation — results reflect what's in the dataset, not tested or reviewed recipes. There are no cooking instructions, photos or ratings to judge a dish by, and the ingredient filter is a narrowing tool, not a meal planner. If your goal is dinner, a dedicated recipe site will serve you better; if your goal is understanding search behaviour, this is a fast way to see it.
A practical next step
Try a deliberately misspelled query, then add an ingredient filter, and compare how the result set changes. That two-minute test tells you more about the search engine's tolerance and filtering than any feature list. If you want to build something similar, the project's source code is linked from the page, and the underlying engine is described at Typesense.
For a real cooking decision, pair this with a mainstream recipe destination such as Allrecipes or BBC Good Food, where you get tested quantities and method steps alongside the search.
How does Typesense make recipe search fast and typo-tolerant?
Typesense makes recipe search fast and typo-tolerant by running a dedicated search engine over a pre-built index of recipes, rather than scanning the recipe text on every query. The demo at Recipe Search with Typesense searches roughly 2 million recipes and returns results as you type, which is the practical payoff of that index-based approach.
Two mechanisms do most of the work:
- A search index instead of a database scan. Recipes are indexed in advance, so a query matches against structured entries rather than a full table of ingredients and instructions. That is what keeps response times low even at large scale.
- Typo tolerance built into matching. The search engine tolerates small spelling errors, so "oregeno" can still surface oregano recipes. This matters for recipe search because ingredient names are long, foreign, and easy to misspell.
The demo also adds filtering by ingredients, which narrows the candidate set before ranking. In the page's own description, this is an open-source, typo-tolerant search engine positioned as an alternative to Algolia and an easier-to-use alternative to ElasticSearch.
Who benefits: anyone building search over a large catalog — recipes, products, documentation — where users type partial or misspelled terms and expect instant feedback.
Trade-offs to weigh:
| Approach | Speed at scale | Typo handling | Setup effort |
|---|---|---|---|
| Indexed search engine | High, near-instant | Built in | Index and sync pipeline needed |
| Plain database queries | Degrades as data grows | Manual fuzzy logic | Low initially |
| Third-party hosted search | High | Built in | Vendor dependency |
The demo's own architecture shows the cost side: a geo-distributed multi-node cluster, a CDN, and a separate adapter for the front-end search UI. That is more moving parts than a simple query, and the index must be kept in sync as recipes change.
Next step: if you are evaluating this for your own catalog, test it against your real data with deliberately misspelled queries and see whether the right items appear in the top few results. If they do, the index-and-sync overhead is usually worth it; if your catalog is small and rarely updated, simpler options may be enough.
What features can I use to filter recipes by ingredients?
On this demo, ingredient filtering is a refinement filter: start with a broad search (say, “curry” or “chicken”), then narrow the results with the “Filter by Ingredients” control. The page’s own example queries — Pizza, Pineapple, Kale, Oregano, Salad, Curry, Healthy, Keto, Low Carb, Steamed, Fried — show the two layers working together: free-text search for the dish or keyword, and an ingredient facet for precision.
How to use it in practice
- Search first for the dish you have in mind, then add one or two ingredients you actually want to use up.
- Keep the ingredient list short. Each added ingredient is an AND-style constraint, so stacking five or six will usually leave you with nothing.
- If a filter returns too few results, drop the least important ingredient rather than changing the dish query.
What it is good for
- Pantry-driven cooking: “I have kale and oregano — what can I make?”
- Dietary narrowing: combining a base query with Keto or Low Carb style terms.
- Excluding nothing: the visible control is for adding ingredients, not for blacklisting allergens, so treat it as a positive filter only.
Trade-offs to expect Typo tolerance helps with misspelled ingredients, but it also means near-matches can slip in — check the ingredient list on each result before committing. Because the underlying dataset is a semi-structured recipe corpus rather than a curated cooking site, quantities and instructions may be inconsistent, so use the search to find candidates and read the recipe itself for the details.
If you want to see how the facet is wired up, the page points to its source code; for a comparable production example of faceted recipe search, Typesense documents the same adapter approach.
How can I build my own recipe search application using Typesense?
You can build one by treating it as two separate jobs: getting a recipe dataset into a search index, and wiring a front-end search UI to that index. The demo at Recipe Search with Typesense is essentially a reference implementation of both, searching roughly 2 million recipes with typo tolerance and ingredient filtering.
The two halves
- Backend: A Typesense node or cluster holds your recipe documents. Each recipe becomes one record with fields such as title, ingredients, instructions, and tags. You choose which fields are searchable (title, ingredients) and which are filterable (ingredients, diet tags like keto or low-carb).
- Frontend: A search box plus optional filters. The demo uses the Typesense Adapter for InstantSearch.js, which gives you as-you-type results, and it's hosted as static files on S3 behind a CDN.
A practical build order
- Get a recipe dataset. The demo uses RecipeNLG, a cooking-recipe dataset built for semi-structured text generation; it works fine as search data even though that wasn't its original purpose.
- Reshape each recipe into a flat JSON document — one object per recipe, with ingredients as an array so you can filter on them.
- Start a local Typesense instance, create a collection with an explicit schema, and import the documents.
- Point a front-end at it. InstantSearch.js is the quickest route if you want a familiar search UI; a plain fetch call works if you'd rather control the markup.
- Add the refinements that matter for cooking: filter by ingredient to use up what's in the fridge, filter by diet tag, and let typo tolerance handle misspellings like "oregeno."
Decisions worth making early
| Choice | When it matters |
|---|---|
| Field types and search weights | Title matches should usually outrank a passing mention inside instructions |
| Facets vs. free filters | Facets suit "show me counts per ingredient"; free filters suit a fixed diet list |
| Single node vs. geo-distributed cluster | Only worth distributing if your users are spread across continents |
The demo runs a three-node cluster with nodes in Oregon, Frankfurt and Mumbai, which is why it stays fast worldwide — but a single node is the sane starting point for a personal project. Typesense itself is open source and typo-tolerant, positioned as a faster-to-set-up alternative to Elasticsearch.
Concrete next step: open the demo's source repository, linked from the site, and read how the collection schema and the InstantSearch adapter are configured. Copy that structure, swap in your own dataset, and run it locally before worrying about hosting or a CDN.
What is the source of the 2 million recipe dataset?
The 2 million recipes come from RecipeNLG, a cooking-recipe dataset originally built for semi-structured text generation. On this site, that same dataset is reused as the search corpus rather than as training data.
If you want to inspect or reuse it, look up the RecipeNLG dataset directly and check its license and fields before building anything on top of it.
How is the search infrastructure deployed on Typesense Cloud?
The demo runs on a geo-distributed three-node Typesense cluster on Typesense Cloud, with nodes in Oregon, Frankfurt and Mumbai. The front end is hosted on S3 behind CloudFront, and it talks to the cluster through the Typesense Adapter for InstantSearch.js. The recipe corpus itself comes from the RecipeNLG dataset, which the site uses for search rather than text generation. You can see the deployment pattern in the source at GitHub.
For a practical read, a three-node cluster spread across those regions is a latency and resilience choice. Someone searching from Europe or India hits a nearby node instead of a single US endpoint, which matters when results need to update on every keystroke. The trade-off is operational: more nodes and regions mean more to monitor, and cross-region replication adds cost and complexity that a single-region deployment avoids. If your audience is concentrated in one country, one region is usually enough; add regions when a meaningful share of users are far from your origin.
To judge whether this architecture fits your project, start with where your users actually are and how much latency your interface tolerates. A search-as-you-type experience benefits most from geographic distribution, while an occasional batch lookup may not justify it. The linked repository is the concrete next step: it shows how the InstantSearch adapter, hosted front end and managed cluster fit together, so you can copy the parts that match your scale.
User reviews (0)