MeiliSearch | Documentation | Slack | Roadmap | Website | FAQ
⚡ How to integrate a front-end search bar in your website using MeiliSearch
MeiliSearch is an open-source search engine. Discover what MeiliSearch is!
This library is a plugin to establish the communication between your MeiliSearch instance and the open-source InstantSearch tools (powered by Algolia) for your front-end application.
Instead of reinventing the wheel, we have opted to reuse the InstantSearch library for our own front-end tooling. We will contribute upstream any improvements that may result from our adoption of InstantSearch.
If you use React or Vue, you might want to check out these repositories:
NB: If you don't have any MeiliSearch instance running and containing your data, you should take a look at this getting started page.
Use npm
or yarn
to install instant-meilisearch
:
$ npm install @meilisearch/instant-meilisearch
$ yarn add @meilisearch/instant-meilisearch
import instantMeiliSearch from "@meilisearch/instant-meilisearch";
const searchClient = instantMeiliSearch(
"https://demos.meilisearch.com",
"dc3fedaf922de8937fdea01f0a7d59557f1fd31832cb8440ce94231cfdde7f25"
);
import instantMeiliSearch from "@meilisearch/instant-meilisearch";
const searchClient = instantMeiliSearch(
"https://demos.meilisearch.com",
"dc3fedaf922de8937fdea01f0a7d59557f1fd31832cb8440ce94231cfdde7f25",
{
paginationTotalHits: 30, // default: 200.
placeholderSearch: false // default: true.
}
);
-
placeholderSearch
(true
by default). Displays documents even when the query is empty. -
paginationTotalHits
(200
by default): The total (and finite) number of hits you can browse during pagination when using the pagination widget. If the pagination widget is not used,paginationTotalHits
is ignored.
Which means that, with apaginationTotalHits
default value of 200, andhitsPerPage
default value of 20, you can browsepaginationTotalHits / hitsPerPage
=>200 / 20 = 10
pages during pagination. Each of the 10 pages containing 20 results.
The default value ofhitsPerPage
is set to20
but it can be changed withInsantSearch.configure
.
⚠️ MeiliSearch is not designed for pagination and this can lead to performances issues, so the usage of the pagination widget is not encouraged. However, thepaginationTotalHits
parameter lets you implement this pagination with less performance issue as possible: depending on your dataset (the size of each document and the number of documents) you might decrease the value ofpaginationTotalHits
.
More information about MeiliSearch and the pagination here.
The open-source InstantSearch library powered by Algolia provides all the front-end tools you need to highly customize your search bar environment.
In index.html
:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
</head>
<body>
<div>
<div id="searchbox"></div>
<div id="hits"></div>
</div>
<script src="https://cdn.jsdelivr.net/npm/@meilisearch/instant-meilisearch/dist/instant-meilisearch.umd.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/instantsearch.js@4"></script>
<script src="./app.js"></script>
</body>
</html>
In app.js
:
const search = instantsearch({
indexName: "steam-video-games",
searchClient: instantMeiliSearch(
"https://demos.meilisearch.com",
"dc3fedaf922de8937fdea01f0a7d59557f1fd31832cb8440ce94231cfdde7f25",
)
});
search.addWidgets([
instantsearch.widgets.searchBox({
container: "#searchbox"
}),
instantsearch.widgets.hits({
container: "#hits",
templates: {
item: `
<div>
<div class="hit-name">
{{#helpers.highlight}}{ "attribute": "name" }{{/helpers.highlight}}
</div>
</div>
`
}
})
]);
search.start();
🚀 For a full getting started example, please take a look at this CodeSandbox:
💡 If you have never used InstantSearch, we recommend reading this getting started documentation.
- The open-source InstantSearch library is widely used and well documented in the Algolia documentation. It provides all the widgets to customize and improve your search bar environment in your website.
- The MeiliSearch documentation.
- If you use React, you might check out meilisearch-react
- If you use Vue, you might check out meilisearch-vue
This package only guarantees the compatibility with the version v0.18.1 of MeiliSearch.
Any new contribution is more than welcome in this project!
If you want to know more about the development workflow or want to contribute, please visit our contributing guidelines for detailed instructions!
MeiliSearch provides and maintains many SDKs and Integration tools like this one. We want to provide everyone with an amazing search experience for any kind of project. If you want to contribute, make suggestions, or just know what's going on right now, visit us in the integration-guides repository.