PHPackages                             jaedb/search - 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. jaedb/search

ActiveSilverstripe-vendormodule[Search &amp; Filtering](/categories/search)

jaedb/search
============

SilverStripe search engine

1.0.0(7y ago)02.1k7[2 PRs](https://github.com/jaedb/Search/pulls)BSD-3-ClausePHP

Since Aug 28Pushed 2y agoCompare

[ Source](https://github.com/jaedb/Search)[ Packagist](https://packagist.org/packages/jaedb/search)[ Docs](http://jamesbarnsley.co.nz)[ RSS](/packages/jaedb-search/feed)WikiDiscussions master Synced 2mo ago

READMEChangelog (1)Dependencies (3)Versions (2)Used By (0)

The built-in SilverStripe search form is a very simple search engine. This plugin takes SQL-based searching to the next level, without requiring the implementation of a full-blown search engine like Solr or Elastic Search. It is designed to bring data-oriented filters on top of the simple text search functionality.

Requirements
============

[](#requirements)

- SilverStripe 4

Usage
=====

[](#usage)

- Create a `SearchPage` instance (typically at the root of your website). This page only is used to display results, so please refrain from creating multiple instances.
- Configure your website's `_config/config.yml` to define search parameters.
- Run `dev/build` to instansiate your new configuration

Configuration
=============

[](#configuration)

- `types`: associative list of types to search
    - `Label`: front-end field label
    - `Table`: the object's primary table (note `_Live` suffix for versioned objects)
    - `ClassName`: full ClassName
    - `ClassNameShort`: namespaced ClassName
    - `Filters`: a list of filters to apply pre-search (maps to `DataList->Filter(key => value)`)
    - `Columns`: columns to search for query string matches (format `Table.Column`)
- `filters`: associative list of filter options
    - `Structure`: defines the filter's relational structure (must be one of `db`, `has_one` or `has_many`)
    - `Label`: front-end field label
    - `Table`: relational subject's table
    - `Column`: column to filter on
    - `Operator`: SQL filter operator (ie `>`, `=`)
    - `JoinTables`: associative list of relationship mappings (use the `key` from the `types` array)
        - `Table`: relational join table
        - `Column`: column to join by
- `sorts`: associative list of sort options
    - `Label`: front-end field label
    - `Sort`: SQL sort string

Example configuration
=====================

[](#example-configuration)

```
---
Name: search
Before:
    - '#site'
---
Jaedb\Search\SearchPageController:
  types:
    docs:
      Label: 'Documents'
      Table: 'File_Live'
      ClassName: 'SilverStripe\Assets\File'
      ClassNameShort: 'File'
      Filters:
        File_Live.ShowInSearch: '1'
      Columns: ['File_Live.Title','File_Live.Description','File_Live.Name']
    pages:
      Label: 'Pages'
      ClassName: 'Page'
      ClassNameShort: 'Page'
      Table: 'Page_Live'
      Filters:
        SiteTree_Live.ShowInSearch: '1'
      JoinTables: ['SiteTree_Live']
      Columns: ['SiteTree_Live.Title','SiteTree_Live.MenuTitle','SiteTree_Live.Content']
  filters:
    updated_before:
      Structure: 'db'
      Label: 'Updated before'
      Column: 'LastEdited'
      Operator: ''
    tags:
      Structure: 'many_many'
      Label: 'Tags'
      ClassName: 'Tag'
      Table: 'Tag'
      JoinTables:
        docs:
          Table: 'File_Tags'
          Column: 'FileID'
        pages:
          Table: 'Page_Tags'
          Column: 'PageID'
  sorts:
    title_asc:
      Label: 'Title (A-Z)'
      Sort: 'Title ASC'
    title_desc:
      Label: 'Title (Z-A)'
      Sort: 'Title DESC'
    published_asc:
      Label: 'Publish date (newest first)'
      Sort: 'DatePublished DESC'
    published_desc:
      Label: 'Publish date (oldest first)'
      Sort: 'DatePublished ASC'

```

###  Health Score

30

—

LowBetter than 64% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity18

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity62

Established project with proven stability

 Bus Factor1

Top contributor holds 100% 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

Unknown

Total

1

Last Release

2816d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/2371dec2a32ba3e67a9e741e601722995688a3991b2a8092de9a75fb88e27cf0?d=identicon)[jaedb](/maintainers/jaedb)

---

Top Contributors

[![jaedb](https://avatars.githubusercontent.com/u/1711444?v=4)](https://github.com/jaedb "jaedb (29 commits)")

---

Tags

silverstripe

### Embed Badge

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

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

###  Alternatives

[silverstripe-terraformers/gridfield-rich-filter-header

Rich filter header component for GridField

1325.7k1](/packages/silverstripe-terraformers-gridfield-rich-filter-header)[silverstripe/solr

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

1914.0k](/packages/silverstripe-solr)[g4b0/searchable-dataobjects

This module adds DataObjects to frontend search

254.9k](/packages/g4b0-searchable-dataobjects)

PHPackages © 2026

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