Ask anything to Algolia Team (AMA)

Algolia is a hosted full-text, numerical, and faceted search engine capable of delivering realtime results from the first keystroke. Built with developers in mind, Algolia's powerful API lets you quickly and seamlessly implement realtime search within your websites and mobile applications.

Algolia examines all words within full-text fields in order to find the most relevant records. This capability allows Algolia to quickly search and return records from large volumes of data.

Algolia responds to search queries in milliseconds which enables a unique search as you type experience. This allows your users to think less about how to search and more about what they find. Exploring neighboring queries becomes easier, making content browsing more intuitive for your audience.

Shoot us any questions you want us to answer!

Hosted by:

Ask a Question

124 discussions

How does Algolia do indexing? Does it index all potential keystroke combinations? To explain, here's an example of how I built a super fast autocomplete service once: If the word that had to be indexed was paper, I would index p, a, e, r as well as pa, ap, pe, er as well as pap, ape, per as well as pape, aper and finally the full word, paper.

Now if I type in p, it will mach with paper since p is indexed, pa will continue to match paper, par will not match paper since it's not indexed.

Does Algolia do something similar?

What is your strategy to manage the huge number of indices being created per word assuming you follow a similar strategy?

Also, do you mind sharing what your storage strategy and engine is? My assumption is that you have machines / instances with huge amounts of RAM in order to make lookups super fast and using the above strategy of indexing it can even work on something like Redis. Then the only bottleneck would be the network, so using something similar to what CDNs are doing, you are placing machines close to where the searches are being done in order to get the type of speed you are getting?

We don't compute all keystroke combinations. Only prefixes are important in an instant search (you are typing the query, so the last word is always partial). Ideally, we would like to compute all prefixes, but this is too expensive and would greatly increase the size of the index. For example, if you type "a", it should match all the words starting with "a" (potentially thousands). In order to solve that, we try to always query a maximum of 10 words, and we introduce "virtual words" to our dictionaries that contain some inverted list for prefixes. These are efficiently computed on-the-fly at indexing and only require a few KBs of memory. We plan to explain this data structure in more detail in a blog post. It is not easy to explain it in an AMA. :) For performance reasons, we try to always have an index in memory. All our plans are designed for performance with an index fully stored in memory and duplicated on at least 3 different machines. This is also a very good way to ensure indexing will not impact search performance.

Reply to this…

Hashnode is a friendly and inclusive dev community.
Come jump on the bandwagon!

  • 💬 Ask programming questions without being judged

  • 🧠 Stay in the loop and grow your knowledge

  • 🍕 More than 500K developers share programming wisdom here

  • ❤️ Support the growing dev community!

Create my profile

Does Algolia take natural language into account? If I search for "book" (as an example), does it know whether I'm looking for the noun (I'm reading a book) or the verb (In order to attend, you need to book)?

We do not apply part of speech tagging to documents we index, but we do rely on the record structure (the different attributes, nested-objects in the JSON). For your book example, you will always have a category or structure that returns actual books before returning a verb in a description or in the full-text. Part of speech tagging is CPU expensive, it’s not 100% accurate and it’s not as good as structure in records :) That said, we rely on lemmatization dictionaries to ignore singulars/plurals and let you integrate synonym dictionaries if you have such a resource.

Reply to this…

Julien Lemoine : What motivated you to start Algolia? How do you think Algolia is going to disrupt the way developers implement search functionality in their apps?

Show all replies

As a complement to what Julien just said, I’d add that we had the same idea of the kind of companies we wanted to build. We actually sat down for half a day and discussed the culture we wanted to build before giving it a go. Knowing that we share the same values was very important for us :)

Reply to this…

I can see that you guys are using Angular in your Dashboard. Do you have any plans to upgrade to Angular2 or React? I am asking because vvo is involved in some good React projects like expect-jsx.

Show all replies

We decided to go with React because we love the ecosystem around it and it’s really powerful in combination with Redux and Webpack. That’s also a really good way for the whole team to share knowledge and have a common playground. We’re intrigued by Angular2 as well, but it’s not currently a viable choice maturity-wise.

Reply to this…

Nice to see you here. My question is : How does Algolia manage to optimize everything at milliseconds level?

Show all replies

We try to optimize at the milliseconds level in every part of our code. The engine and the network being the most important parts. But we also optimize our frontend tools like instantsearch.js.

In an interface where you render results on screen at every keystroke, you need to carefully optimize your code to only render what needs to be rendered.

Reply to this…

Load more responses