5 Open-Source Search Engines For your Website
Tags: webdev, elasticsearch, opensource, discuss
Published: 2021-07-05 08:34:10

A **search engine** is a software program that helps people find the information they are looking for online using search queries containing keywords or phrases.

Search engines are able to return results quickly even with millions of records by indexing every data record they find. In this blog post, I will list 5 popular open-source search engines which can be used to build search functionality in your website.

* [Apache Lucene](#apache-lucene)
* [Apache Solr](#apache-solr)
* [Elasticsearch](#elasticsearch)
* [MeiliSearch](#meilisearch)
* [Typesense](#typesense)

## Apache Lucene
![apache-lucene](https://i2.wp.com/www.cmsbestpractices.com/wp-content/uploads/2014/04/lucene-logo.png?ssl=1)

[Apache Lucene](https://lucene.apache.org/) is a free and open-source search engine software library, originally written completely in Java. It is supported by the Apache Software Foundation and is released under the Apache Software License.
It is a technology suitable for nearly any application that requires full-text search, especially cross-platform.

Below are some of the key features of Apache Lucene.

- Data Indexing
- Search
- Spellchecking
- Keyword Highlighting 
- Advanced analysis/tokenization capabilities.

## Apache Solr

![apache-solr](https://norconex.com/wp-content/uploads/Solr_Logo_on_white_web.png)

[Apache Solr](https://solr.apache.org/) is the popular, blazing-fast, open-source enterprise search platform built on Apache Lucene. Solr is a standalone search server with a REST-like API. You can put documents in it (called "indexing") via JSON, XML, CSV, or binary over HTTP. You query it via HTTP GET and receive JSON, XML, CSV, or binary results. 

Below are some of the key features of Solr.

- **Advanced Full-Text Search Capabilities **: Solr enables powerful matching capabilities including phrases, wildcards, joins, grouping, and much more across any data type.

- **Optimized for High Volume Traffic**: Solr is proven at extremely large scales the world over

- **Comprehensive Administration Interfaces**: Solr provides a responsive administrative user interface to make it easy to control your Solr instances.

- **Easy Monitoring**: Solr publishes loads of metric data via JMX which helps to get more insights about your Solr instances.

## Elasticsearch

![elasticsearch](https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTAy3mYnTuHNa6Rb1OFOq6y3bnu4RcjTHgOvebV2ksmaqTHiPbIqUAjsuKMPNACaNbmLxA&usqp=CAU)

[Elasticsearch](https://www.elastic.co/elasticsearch/) is a distributed, RESTful search and analytics engine capable of addressing a growing number of use cases. It is built based on the Lucene library. It provides a distributed, multitenant-capable full-text search engine with an HTTP web interface and schema-free JSON documents.

Elasticsearch provides key features like Advanced Full-Text Search Capabilities like Data indexing, Search capabilities including phrases, wildcards, auto suggestions, filters & facets, etc... Elasticsearch can also be used for other use-cases like

- Logs - Storing logs via ELK (Elasticsearch, Logstash, Kibana)
- Metrics - Monitor and Visualise your system metrics
- APM - Get insights into your application performance
- App Search - Search across your documents, geodata, and more.

## MeiliSearch

![meiliSearch](https://pbs.twimg.com/profile_images/1083373459839832066/umk6BM0F_400x400.jpg)

[MeiliSearch](https://www.meilisearch.com/) is an open-source, blazingly fast and hyper-relevant search engine that will improve your search experience. It provides an extensive toolset for customization. It works out-of-the-box with a preset that easily answers the needs of most applications. Communication is done with a RESTful API because most developers are already familiar with its norms.

Below are the few key features of MeiliSearch.

- **Synonyms **: Ability to create synonyms for a better search experience.
- **Highlight**: With highlight, users understand their search results and act upon them.
- **Custom Relevancy**: It gives you the possibility to add new sorting rules. You can order results by date, likes, whatever suits your dataset.
- **Filters**: Improve your search query by adding custom filters.
- **Faceting**: Empower users to drill down on search results and find what they need faster.


## Typesense

![typesense](https://pbs.twimg.com/profile_images/1392352271111888901/5vvtoxsS_400x400.jpg)

[Typesense](https://typesense.org/) is a fast, typo-tolerant search engine for building delightful search experiences. It claims that it is an Easier-to-Use ElasticSearch Alternative & an Open Source Algolia Alternative.

Below are few key features of Typesense

- **Typo Tolerance**: Handles typographical errors elegantly, out-of-the-box.
- **Simple and Delightful**: Simple to set up, integrate with, operate, and scale.
-⚡** Blazing Fast**: Built-in C++. Meticulously architected from the ground-up for low-latency (<50ms) instant searches.
- **Tunable Ranking**: Easy to tailor your search results to perfection.
Sorting: Sort results based on a particular field at query time (helpful for features like "Sort by Price").
- **Faceting & Filtering**: Drill down and refine results.
- **Grouping & Distinct**: Group similar results together to show more variety.
- **Federated Search**: Search across multiple collections (indices) in a single HTTP request.
- **Synonyms**: Define words as equivalents of each other, so searching for a word will also return results for the synonyms defined.
- **Geo search** - Search and sort by results around a geographic location 

## Other Popular Enterprise Search Engines

Below are a few other popular Enterprise Search Engines that are not free
- [Algolia](https://www.algolia.com/)
- [Swiftype](https://swiftype.com/)
- [Klevu](https://www.klevu.com/)

<hr>

## Thank you for reading
Hope you find these resources useful. If you like what you read and want to see more about system design, microservices, and other technology-related stuff... You can follow me on 

- Twitter - <a href="https://twitter.com/vishnuchi?ref_src=twsrc%5Etfw" class="twitter-follow-button" data-size="large" data-show-count="false">Follow @vishnuchi</a><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
- Subscribe to my weekly newsletter [here](https://www.getrevue.co/profile/vishnuch).