# Search Engine

Harmony provides a powerful search engine functionality where you can search, find and edit board items in a matter of seconds. Currently there are two search engines supported:

* [Algolia](https://www.algolia.com/) search engine
* Direct database search

{% hint style="info" %}
In case you don't want to setup **Algolia**, then you don't have to change anything. By default Harmony uses the direct database search engine.&#x20;

If though Harmony is used by many teams, having multiple boards then it is highly recommended that you integrate Algolia.
{% endhint %}

<figure><img src="/files/kAFJNY41KLhUno5XeGb6" alt=""><figcaption><p>Searching Harmony</p></figcaption></figure>

### Configure Algolia

Algolia is the easiest search engine existing to configure. It provides 10000 requests for free per month so you can certainly test it without even paying. Follow the next steps to create an App Id & and an API Key.&#x20;

* Subscribe and create a new account
* Navigate to your [account](https://dashboard.algolia.com/account/overview). You will see that an Application has been already created in the **Applications** nav item. If you wish, you can rename it and if not created automatically for you, proceed by creating one. Copy its **ApplicationId**.

<figure><img src="/files/U4g8IP1sfwep0mZelEdk" alt=""><figcaption><p>Algolia account page</p></figcaption></figure>

* Click the API keys from your [account](https://dashboard.algolia.com/account/overview) page. Again, you will see that an API public key that can be used for searching has been already created for you. In case there isn't any, then create one. Copy the **API Key**.

<figure><img src="/files/Gdpe1wgDeHwhSDuaY1AV" alt=""><figcaption><p>API key</p></figcaption></figure>

* Select Algolia for your search engine in the Harmony.Server project in the program.cs

```csharp
builder.Services.AddSearching(SearchEngine.Algolia, builder.Configuration);
```

* Set the **ApplicationId** and the **ApiKey** properties in the *appsettings.json* file in the <mark style="color:blue;">Harmony.Serve</mark>r and <mark style="color:blue;">Harmony.Notifications</mark> projects.&#x20;

```json
  "AlgoliaConfiguration": {
    "ApplicationId": "YOUR_APPLICATION_ID_HERE",
    "ApiKey": "YOUR_API_KEY_HERE"
  },
```

{% hint style="warning" %}
Algolia indexing is being handled by the **Harmony.Notifications** that accepts messages from the **RabbitMQ** so make sure you have both of them up & running. \
Every time you make a change in cards, Harmony.Server sends a message and Harmony.Notifications makes a request to Algolia to update/index the change.
{% endhint %}

Algolia will contain an index for each board named by the **workspace\_name-board\_name** and it's being created when you **create the board**. This means that you may have to re-create from scratch the board/project and add cards to it. In a future release, there will be a button that automatically syncs all boards and their items without having to create it from scratch :fingers\_crossed:.

<figure><img src="/files/MvtYk2ber7egkynzc5bB" alt=""><figcaption><p>Index records</p></figcaption></figure>

#### Read next: Algolia dependency

{% content-ref url="/pages/5nTrkS4LOF6BA24L3CPE" %}
[RabbitMQ](/harmony/configuration/dependencies/rabbitmq.md)
{% endcontent-ref %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://chsakell.gitbook.io/harmony/configuration/dependencies/search-engine.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
