"Just use .filter() to make it, it's easy!"
No, it's not.
Search is one of the most underestimated features by developers.
Here’s why it quickly becomes complicated to implement — and the “hack” that might save you.
Why is it so difficult?
1. Language is messy
You probably think “difficult” and “hard” mean the same thing.
You might not care about small typos or whether it’s alice or Alice.
Well, your users feel the same.
In those cases, .filter() just isn’t enough.
You need to support:
Synonyms
Typos
Different formats (kebab-case, camelCase, snake_case...)
2. It’s not just about matching — it’s about ranking
Users don’t want all relevant results — they want the best ones, first.
That means:
Scoring
Weighting
Ranking
Congratulations, you’re building a tiny search engine.
4. Flexibility across use cases
Every project is different.
So you’ll end up building a different algorithm for each one.
Searching for products is not the same as searching blog posts.
The harsh reality
It always starts with a simple .filter()...
Then reality kicks in — and suddenly, you're hacking together feature after feature.
What you actually need is:
✅ A clean, minimal API
✅ Support for typos, synonyms, and fuzzy matching
✅ Relevance scoring with custom weights
✅ HTML-ready results for instant rendering
In short: you're no longer just filtering —
You're reinventing search from scratch.
The solution
What if you could skip the complexity and use a tool that just works?
A tool that gives you:
A simple, intuitive API
Results ranked by relevance
Built-in support for typos and synonyms
Full flexibility to fit any use case
That’s exactly what SimpliSearch offers.
Here’s an example:
const todos = [...]
const searchCompletedTodos = () => {
const results = search({
query: text,
list: todos,
targets: [
{ key: "title", weight: 1 },
{ key: "description", weight: 0.5 }
],
when: todo => todo.completed === true,
addedSynonims: [
["finish", "done", "complete"]
],
concat: todo => `<div>${todo.title}</div>`,
onFinish: ({ concated }) => {
suggestions.innerHTML = concated
}
})
}
In short: building a search system isn’t about filtering a list —
It’s about giving users exactly what they’re looking for.
Top comments (0)