Discourse Algolia Search

:discourse2: Summary Discourse Algolia Search integrates Algolia with Discourse search.
:hammer_and_wrench: Repository Link https://github.com/discourse/discourse-algolia
:open_book: Install Guide How to install plugins in Discourse

Features

I’ve recently created a plugin that indexes topics, posts, users and tags with Algolia and combines them into a multi-category autocomplete search. Here’s a GIF of how it works, and you can try it live right now on the Algolia Community Discourse.

You can find the Github repository, complete with installation instructions, on github at algolia/discourse-algolia.

Plugin configuration just requires populating a few fields. Indexing tasks are put in the jobs queue after objects are saved. Note: you will need to create an Algolia account, which is free up to 10,000 records.

Configuration

:raising_hand_woman: FAQ

Q: Does this replace the default Discourse search?
A: Only if you want it to, and right now only for the autocomplete in the header. The full search page is still reachable by hitting the enter key without a search result selected, or by using the “advanced search” link in the autocomplete footer. I say “only if you want it to” because you can enable indexing to Algolia but not affect the UI or existing Discourse search in any way - that’s why there are two checkboxes in the plugin settings. If you’re just doing indexing, you can search the data in your Algolia dashboard to see how it’s working.

Q: Do I have to pay to use the plugin?
A: It depends on how much data you have. If you have less than 1k posts, you should fit into Algolia’s free Community Plan, which gives you 10k records. A good rule of thumb is that you’ll need 10 Algolia records for each post, as posts are split up into-paragraph size chunks for optimum relevance and speed. Still, YMMV. If you’d like to use the plugin but have concerns about the cost, just send me an email and I’ll see what we can do. If you are an open source project or a non-profit, you may quality for higher limits, just fill out this form and mention Discourse.

CHANGELOG

2022.11.02

Pushed PR

  • Updated algoliasearch.js to 4.14.2
  • Updated autocomplete.js to 1.7.1

2020.09.08

Pushed 8 commits to GitHub - discourse/discourse-algolia: A plugin for indexing and searching your Discourse with Algolia

  • It should fix the bug where the search box stopped working after multiple page loads. :warning: NOTE: the plugin needs the very latest version of Discourse to work

  • The plugin is now using Discourse scss variables, and will now work correctly in Dark mode

  • Fixed a bug where user search was leading to /users instead of /u and would result in a 404. :warning: NOTE: You will need to reindex users for this to work correctly rake algolia:reindex_users

  • Fxed an alignment issue of the searchbox

  • Applied various coding standards

  • Removed part of the jquery usage

  • Searchbox should be slightly faster, as it’s now tied to rendering instead of arbitrary 100ms wait (also removed the forbidden setTimeout usage)


TODO

pr-welcome for the following tasks:

  • update algoliasearch (ruby)

This would ensure we are not deprecated in the future and allow to import libraries instead of having it in global namespace.

60 Likes

The plugin seems to auto reindex. Can someone tell me how often it does this? I don’t see any documentation about it.
thanks

1 Like

Unless someone in the community knows the answer, it might take until next week to get an answer from the Discourse team about this.

I see that the plugin runs a job every 5 minutes to process all objects (posts, topics, users, tags) that are queued to be indexed: https://github.com/discourse/discourse-algolia/blob/main/app/jobs/scheduled/update_indexes.rb. It’s not clear to me what would cause an object to be reindexed though.

If you have a chance to respond, I’m curious about what you are seeing that makes it seem that content is being reindexed.

1 Like

Hi Simon, thanks for the reply! I created a test post. We have an Algolia account. So the next day I logged in and did a search for that post within the Algolia admin and it was showing up. I believe I had checked immediately after posting and didn’t see the post in Algolia. But understand there must be some kind of delay while indexing. 5 minutes would be pretty good. I can try another post and wait 10 minutes to see if its there. I’m surprised there is no mention of this in the documentation.

2 Likes

I just started testing out this plugin. A couple questions:

  1. When I search for a keyword, Algolia is only listing different paragraphs from the same topic, instead of how Discourse shows unique topics. Unless that topic is the ultimate answer, this method seems more restrictive and inaccurate for the end users. Should this behavior be configurable?

  2. The plugin creates 3 indices in the Algolia app one for each posts, tags and users types. How could I have this plugin to include other indexes that are available in my Algolia app. Use case: Multi-site search via Algolia

The last one is more like a feature request, but I strongly believe the first one needs to be a configurable option for usable search results.