Search
Today, finding a high-quality search engine may be complicated. Because we realized there was a lack of both powerful and simple solutions, we decided to create MeiliSearch. The simplicity of use is our philosophy and it keeps driving the development of MeiliSearch.
We aimed for a simple and intuitive experience for both developers and end-users.
For developers, it requires very little configuration to be up and running. Communication to the server is done through a RESTful API.
For users, the search experience aims to feel simple so they can focus on the results. MeiliSearch delivers an intuitive search-as-you-type experience; which means a response time lower than 50 milliseconds.
MeiliSearch works out-of-the-box with default settings that meet the needs of most projects.
However, searching is highly customizable.
You can also configure the to refine your search even further. We support filters and .
MeiliSearch in action with and
joker
being defined as synonyms.
All of MeiliSearch’s features are provided out-of-the-box and can be easily configured. Here is a few of them that you should try out:
Also called instant search, results are displayed while you are still inputting your query. Showed results are changed in real-time whenever you type additional text in the search box.
Typo tolerance
Instead of letting typos ruin your search experience, MeiliSearch will find the results you expect.
Read more about typo tolerance in this dedicated guide.
Synonyms
Search should not be limited by some specific words.
Read more about synonyms in this dedicated guide.
MeiliSearch supports Latin-based languages, English, and Kanji characters.
Highlighting
Filters
Meilisearch allows you to define so you can filter through the results based on criteria.
Faceted search is a feature provided out-of-the-box by MeiliSearch. It allows you to classify search results into categories and to build intuitive navigation interfaces.
Placeholder Search
If you make a search without inputting any query words, MeiliSearch will return all the documents in that index sorted by its custom ranking rules. This feature is called placeholder search. It is particularly effective when used with other features such as , which allow users to narrow their searches and browse by category.
Placeholder search is not affected by MeiliSearch’s default ranking rules—only custom rules added by a user. If no custom rules have been set, the results are displayed in the order of their internal database position.
Examples
Here are a few examples of what can be achieved with the search parameters:
Results can be paginated using the limit
and offset
query parameters.
client.index('movies').search('shifu', {
limit: 5,
})
client.index('movies').search('shifu', {
'limit': 5,
'offset': 10
})
$client->index('movies')->search('shifu', ['limit' => 5, 'offset' => 10]);
Query: "shifu",
Limit: 5,
Offset: 10,
})
let results: SearchResults<Movie> = movies.search()
.with_query("shifu")
.with_limit(5)
.with_offset(10)
.await
.unwrap();
You can filter results using the filters
query parameter.
--data '{ "q": "Avengers", "filters": "release_date > 795484800" }'
client.index('movies').search('Avengers', {
'filters': 'release_date > 795484800'
})
$client->index('movies')->search('Avengers', ['filters' => 'release_date > 795484800']);
index.search('Avengers', {
filters: 'release_date > 795484800'
})
let results: SearchResults<Movie> = movies.search()
.with_query("Avengers")
.with_filters("release_date > 795484800")
.execute()
.unwrap();
There’s no need to write a single line of front-end code. All you need to do is follow to give the search engine a try!