This template shows how to enable full text search on firebase database elements by using an Algolia hosted search service.
See file functions/index.js for the code.
The dependencies are listed in functions/package.json.
As an example we'll be using a simple blog structure:
/functions-project-12345
/blog-posts
/key-123456
text: "This is my first blog entry..."
last_index_timestamp: 1234567890
/key-123457
text: "This is my second blog entry..."
last_index_timestamp: 1234567891
/search
/queries
/key-546789
query: "first entry"
/key-078234
query: "second entry"
/results
/key-546789
hits: [...
/key-078234
hits: [...
/last_query_timestamp: 1234567892
Whenever a new blog post is created or modified a Function sends the content to be indexed to the Algolia instance.
To perform new searches clients add the search query to the realtime database under /search/queries/
which triggers a
Firebase function which performs the search on the Algolia instance. The results are written under the /search/results/
tree.
Create an Algolia account at www.algolia.com.
Enable Billing on your Firebase project by switching to the Blaze plan. You need billing enabled to allow external requests. For more information have a look at the pricing page.
Set the algolia.app_id
and algolia.api_key
Google Cloud environment variables to match the Algolia application ID and API key of your account. For this use:
firebase functions:config:set algolia.app_id="myAlgoliaAppId" algolia.api_key="myAlgoliaApiKey"