PHPackages                             silverstripe/silverstripe-search-sdk - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Search &amp; Filtering](/categories/search)
4. /
5. silverstripe/silverstripe-search-sdk

ActiveMetapackage[Search &amp; Filtering](/categories/search)

silverstripe/silverstripe-search-sdk
====================================

A Software Development Kit for Silverstripe Search

3.1.1(2mo ago)1862↓16.7%1BSD-3-ClausePHP ^8.3

Since Aug 5Pushed 2mo ago3 watchersCompare

[ Source](https://github.com/silverstripeltd/silverstripe-search-sdk)[ Packagist](https://packagist.org/packages/silverstripe/silverstripe-search-sdk)[ Docs](https://github.com/silverstripeltd/silverstripe-search-sdk)[ RSS](/packages/silverstripe-silverstripe-search-sdk/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (10)Dependencies (12)Versions (25)Used By (0)

🧰 Silverstripe Search SDK
=========================

[](#-silverstripe-search-sdk)

Silverstripe Search is designed to integrate easily with the Silverstripe CMS. This Software Development Kit (SDK) is a one-stop-shop for getting your application integrated.

- [🧰 Silverstripe Search SDK](#-silverstripe-search-sdk)
    - [Tagged dependencies](#tagged-dependencies)
    - [Engine vs Index](#engine-vs-index)
    - [Setting up](#setting-up)
    - [Installation](#installation)
        - [Install the complete SDK run:](#install-the-complete-sdk-run)
        - [Updates](#updates)
        - [🛼 Roll-your-own installation](#-roll-your-own-installation)
    - [Specify environment variables](#specify-environment-variables)
        - [Understanding your engine prefix and suffix:](#understanding-your-engine-prefix-and-suffix)
    - [Indexing your CMS content](#indexing-your-cms-content)
    - [Get search to your users](#get-search-to-your-users)
    - [Administrative interface](#administrative-interface)

Tagged dependencies
-------------------

[](#tagged-dependencies)

As part of the Silverstripe Search managed service, we will put the required dependencies (and the explicit versions) through our internal regression testing before adding them to this SDK.

This means that new tags for the SDK **will trail** tags being made on the upstream dependencies to ensure they are stable and work well with the service.

**If you want updates to dependencies faster**, then you should define your own requirements for those dependencies with your own version constraints. By doing so, you accept the risks of your defined versioned constraints.

Engine vs Index
---------------

[](#engine-vs-index)

Important

**TL;DR:**
For all intents and purposes, "engine" and "index" are synonomous. If we refer to something as "engine", but the Discoverer module is asking for an "index", then you simply need to give it the data you have for your engine.

The Discoverer and Forager modules are built to be service-agnostic; meaning, you can use them with any search provider, as long as there is an adaptor for that service.

When Discoverer refers to an "index", it is talking about the data store used for housing your content. These data stores are known by different names across different search providers. Algolia and Elasticsearch call them "indexes", Typesense calls them "collections", App Search calls them "engines". Discoverer had to call them **something** in its code, and it chose to call then "indexes"; Silverstripe Search, however, calls them "engines".

Actions apply in the same way to all of the above. In Silverstripe Search, the action of "indexing" is the action of adding data to your engine, where it is said to be "indexed". Updating that data is commonly referred to as "re-indexing".

Setting up
----------

[](#setting-up)

Before you can get stared with this SDK you will need:

- A Silverstripe CMS application
- Bifröst Environment variables (provided when you sign up for Silverstripe Search)

Installation
------------

[](#installation)

There are 4 core parts to the SDK:

1. **Indexing:** Getting your CMS content indexed into the search engine
    - Provided by the [Forager](https://github.com/silverstripeltd/silverstripe-forager) module
2. **Querying:** Searching the indexed content in your search engine
    - Provided by the [Discoverer](https://github.com/silverstripeltd/silverstripe-discoverer) module
3. **Search UI:** A default implementation of a search results page with basic control over search options, designed to get you up and running quickly if you have basic search requirements
    - Provided by the [Discoverer &gt; Search UI](https://github.com/silverstripeltd/silverstripe-discoverer-search-ui) module
4. **Admin:** A CMS user interface that provides some details about your search engines. Available features depend on your plan
    - Provided by the [Bifrost &gt; Admin](https://github.com/silverstripeltd/silverstripe-bifrost-admin) module

**1. Indexing**, and **2. Querying**, and **4. Admin** are likely to be requirements for most projects, but **3. Search UI** potentially **isn't**. Some reasons why you might not want the Search UI include:

- You are using Subsites
- You are using Fluent
- You perform your search queries through JavaScript/XHR
- You have other complex search requirements that aren't covered by the Search UI module

### Install the complete SDK run:

[](#install-the-complete-sdk-run)

```
composer require silverstripe/silverstripe-search-sdk
```

### Updates

[](#updates)

To update the SDK, be sure to include `-W` / `--with-all-dependencies`

```
composer update silverstripe/silverstripe-search-sdk -W

```

### 🛼 Roll-your-own installation

[](#-roll-your-own-installation)

If you want to dial in your installation you can manually add the packages above to your composer.json.

- If you only want **1. Indexing**, then you could require just the Forager dependencies
- If you only want **2. Querying**, then you could require just the Discoverer dependencies

It will be up to you what version constraints you apply, but noting again, only the versions required in this repository have gone through our regression testing process.

Specify environment variables
-----------------------------

[](#specify-environment-variables)

To integrate with Silverstripe Search, define environment variables containing your endpoint, engine prefix, management API key, and query API key.

```
BIFROST_ENDPOINT=>
BIFROST_ENGINE_PREFIX=>
BIFROST_MANAGEMENT_API_KEY=>
BIFROST_QUERY_API_KEY=>

```

Tip

For Silverstripe Cloud clients:

- `BIFROST_ENDPOINT` and `BIFROST_ENGINE_PREFIX` should be added as Variables
- `BIFROST_MANAGEMENT_API_KEY` and `BIFROST_QUERY_API_KEY` should be added as Secrets.

### Understanding your engine prefix and suffix:

[](#understanding-your-engine-prefix-and-suffix)

- All Silverstripe Search engine names follow a 4 slug format like this: `search---`
- Your `` is everything except `-`; so, it's just `search--`

For example:

EngineEngine prefixEngine suffixsearch-acmecorp-prod-mainsearch-acmecorp-prodmainsearch-acmecorp-prod-incsearch-acmecorp-prodincsearch-acmecorp-uat-mainsearch-acmecorp-uatmainsearch-acmecorp-uat-incsearch-acmecorp-uatinc**Why?**

Because you probably have more than one environment type that you're running search on (e.g. Production and UAT), and (generally speaking) you should have different engines for each of those environments. So, you can't just hardcode the entire engine name into your project, because that code doesn't change between environments.

Whenever you make a query, Forager and Discoverer will ask you for the "index" name; you will actually want to provide only the ``. We will then take `BIFROST_ENGINE_PREFIX` and your ``, put them together, and that's what will be queried. This allows you to set `BIFROST_ENGINE_PREFIX` differently for each environment, while having your `` hardcoded in your project.

Indexing your CMS content
-------------------------

[](#indexing-your-cms-content)

Please see the [Forager &gt; Bifröst](https://github.com/silverstripeltd/silverstripe-forager-bifrost?tab=readme-ov-file#configuration) documentation for details on how to get set up with indexing your content.

Get search to your users
------------------------

[](#get-search-to-your-users)

You may or may not want to use the [Discoverer &gt; Search UI](https://github.com/silverstripeltd/silverstripe-discoverer-search-ui) module, **if you don't want to use it**, then the Discoverer module has quite a bit of documentation regarding how you can get your search form and results in front of your users; including an example `SearchResults` Page and Controller:

- [Discoverer &gt; Bifröst](https://github.com/silverstripeltd/silverstripe-discoverer-bifrost?tab=readme-ov-file#usage) documentation for details on how to start querying the indexed content from your engines.
- [Simple usage](https://github.com/silverstripeltd/silverstripe-discoverer/blob/main/docs/simple-usage.md): An example `SearchResults` Page, Controller, and template, with a basic query example with pagination and result fields
- [Detailed querying](https://github.com/silverstripeltd/silverstripe-discoverer/blob/main/docs/detailed-querying.md): How to query with filters, search fields, result fields, facets, etc
- [Detailed result handling](https://github.com/silverstripeltd/silverstripe-discoverer/blob/main/docs/detailed-result-handling.md): More information about the `Results` object that Discoverer returns to you whenever you perform a search query

Administrative interface
------------------------

[](#administrative-interface)

The `silverstripeltd/silverstripe-bifrost-admin` module is installed by default as part of [Silverstripe Search 1.0.0](https://search.silverstripe.cloud/resources/guides/category/changelog.html). The initial release lets you do the following:

- See configured engines and their document count
- View engine schema information
- Manage Synonyms for an engine (for Analyst plan users)

###  Health Score

49

—

FairBetter than 95% of packages

Maintenance86

Actively maintained with recent releases

Popularity20

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity64

Established project with proven stability

 Bus Factor1

Top contributor holds 51.4% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~32 days

Recently: every ~40 days

Total

19

Last Release

68d ago

Major Versions

1.1.4 → 2.0.02024-11-11

2.x-dev → 3.0.02025-10-24

PHP version history (2 changes)1.0.0PHP ^8.1

3.0.0PHP ^8.3

### Community

Maintainers

![](https://www.gravatar.com/avatar/afbb3dcc9ef29c1a6eedd6addcae5fce9ab1271915a85a4c349301b71237368d?d=identicon)[silverstripe-machine01](/maintainers/silverstripe-machine01)

---

Top Contributors

[![chrispenny](https://avatars.githubusercontent.com/u/505788?v=4)](https://github.com/chrispenny "chrispenny (18 commits)")[![blueo](https://avatars.githubusercontent.com/u/948122?v=4)](https://github.com/blueo "blueo (13 commits)")[![HeyImPhil](https://avatars.githubusercontent.com/u/4695076?v=4)](https://github.com/HeyImPhil "HeyImPhil (4 commits)")

---

Tags

searchsilverstripeSilverstripe-CMSSearch ServiceDevelopment KitSearch Service SDKSoftware Development Kit

### Embed Badge

![Health badge](/badges/silverstripe-silverstripe-search-sdk/health.svg)

```
[![Health](https://phpackages.com/badges/silverstripe-silverstripe-search-sdk/health.svg)](https://phpackages.com/packages/silverstripe-silverstripe-search-sdk)
```

###  Alternatives

[silverstripe/solr

Solr integration for SilverStripe. Note that this is NOT related to the silverstripe/fulltext package.

1914.0k](/packages/silverstripe-solr)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
