Typesense

Typo tolerant, delightfully simple, open source search πŸ”

#5 Product of the DayApril 06, 2018

Typesense is an open source, typo tolerant search engine that delivers fast and relevant results out-of-the-box.

Typesense has been built from scratch to offer a delightful search experience with minimal effort. From instant search, to autosuggest, to faceted search, Typesense has got you covered.

Reviews
Discussion
This looks pretty cool - how does this differ from using elasticsearch?
Upvote (1)Share
@benoj Elasticsearch is better suited for larger teams which have the bandwidth to administer, scale and fine-tune it and when have a need to store billions of documents and scale horizontally. Typesense is built specifically for decreasing the "time to market" for a delightful search experience. This means focussing on developer productivity+experience with a clean API, clear semantics and smart defaults so it just works without turning many knobs.
Upvote (3)Share
@kishorelive This looks pretty interesting to me :) I was thinking of using ES to provide better search for a firebase application I am building. However, this looks like it is a viable alternative. How easy is it to cluster nodes etc...
@benoj Currently, we support a single-master, multiple read-only replica set-up. The read-only replicas asynchronously pull data from master. Our API clients automatically failover reads to the replicas if the master is unavailable. It's really easy to set-up read replicas. More details here: https://typesense.org/guide/#hig... We don't support HA for writes (yet). However, you can use a queue and a set of workers to push data to Typesense if write HA is absolutely important (although I know that it involves more work).
@kishorelive cool! Can this support multiple field query? I.e. title contains "Harry" AND author="JK Rowling"
@benoj Yes, you can search multiple fields by separating them with comma. For e.g `query_by: name,compnay`. The order also assigns importance to the fields - so a match in `name` would be deemed more important than a match in `company`.
This is awesome. Keep up the good work
how about memory , ES requires a humongous minimum requirement of minimum 18gigs - 30gigs I had to give up the enitre idea of using it locally :(
@gilbertmpanga12 From my first-hand experience, you can easily run it with 1G of RAM (even 512MiB I would say).
Upvote (2)Share
@gilbertmpanga12 A fresh Typesense server will take less than 5 MB of memory. As you start indexing documents, the memory use will increase correspondingly. How much it increases depends on the number of fields you index and the type of fields indexed. We've strived to keep the in-memory data structures lean. To give you a general idea: when I index about 1 million Hacker News titles along with their points, it takes 165 MB of memory. The same size of that data on disk in JSON format is 88 MB.
Upvote (2)Share
Tried your product. It is really cool and works as promised without too many hassles. One thing that I couldn't figure out was whether I can have optional fields in documents in a collection.
@sharatchandra2 You can have any number of fields in a document that are outside your schema definition. Typesense will only index what you specify in the schema. The other fields are stored on disk and are returned when the document is queried.
I think I phrased the question in a wrong way. Is it necessary to specify values corresponding to an indexed field? Because when I tried it last, I was getting errors corresponding to the same.