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

ActiveFlightphp-plugin[Search &amp; Filtering](/categories/search)

pubvana/search
==============

Search package for Pubvana

0.1.1(1mo ago)02MITPHPPHP ^8.1

Since May 6Pushed 1mo agoCompare

[ Source](https://github.com/Pubvana-CMS/search)[ Packagist](https://packagist.org/packages/pubvana/search)[ RSS](/packages/pubvana-search/feed)WikiDiscussions main Synced 1w ago

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

Pubvana Search
==============

[](#pubvana-search)

**I noticed folks downloading some of these packages. I'm super grateful, Thank You! I would like to let folks know until this notice disappears I'm doing a lot of breaking changes without worrying about them. Once versions are up around 0.5.x things should settle down.**

Full site search package for Pubvana. Searches across all registered content types with relevance-ranked results and highlighted excerpts.

Requirements
------------

[](#requirements)

- PHP 8.1+
- `enlivenapp/flight-school` ^0.3
- `enlivenapp/flight-settings` ^0.2

Features
--------

[](#features)

- Searches published blog posts and pages out of the box (when those packages register as providers)
- Relevance-ranked results - title matches score higher than content matches
- Multi-word queries score exact phrase matches and individual word matches
- Highlighted search terms in results using `` tags
- Paginated results
- Extensible - any package can register as a searchable content provider
- Search form block for theme region placement
- Configurable results per page and minimum query length via settings

Public Routes
-------------

[](#public-routes)

MethodURLDescriptionGET`/search?q=term`Search results pageService Usage
-------------

[](#service-usage)

The search service is available as `$app->search()`:

```
$results = $app->search()->search('my query', $page);
```

Returns:

```
[
    'items'    => [...],   // Array of result arrays
    'total'    => 12,      // Total result count
    'page'     => 1,       // Current page
    'per_page' => 10,      // Results per page
    'query'    => 'my query',
    'error'    => null,    // Error message or null
]
```

Each result item:

```
[
    'title'        => 'Post Title',
    'url'          => '/blog/post-slug',
    'excerpt'      => 'Matched excerpt with highlighted terms...',
    'content_type' => 'Post',
    'published_at' => '2026-05-06 12:00:00',
    'relevance'    => 16,
]
```

Registering a Content Type as Searchable
----------------------------------------

[](#registering-a-content-type-as-searchable)

Any package can make its content searchable by registering a search provider via adext in its `Plugin.php`:

```
$app->adext('search', 'provider', 'yourvendor.your-package', [
    'label'    => 'Your Content',
    'callable' => function (string $term): array {
        // Query your content using ActiveRecord like()
        // Return array of result arrays with keys:
        //   title, url, excerpt, content_type, published_at, relevance
        return $results;
    },
]);
```

Relevance scoring is up to each provider. Recommended weights:

- Title match: 10
- Excerpt match: 5
- Content match: 3
- Per-word title match: 3
- Per-word excerpt match: 2
- Per-word content match: 1

Configuration
-------------

[](#configuration)

Settings are stored in the `settings` table with class `Search`:

KeyDefaultDescription`results_per_page`10Number of results per page`min_query_length`3Minimum characters required to searchSearch Form Block
-----------------

[](#search-form-block)

The package registers a `pubvana.search.form` block that can be placed in any theme region. Block options:

- **Form Action URL** - defaults to `/search`
- **Label** - defaults to `Search`
- **Placeholder** - defaults to `Search...`
- **Button Text** - defaults to `Go`

License
-------

[](#license)

MIT

###  Health Score

35

—

LowBetter than 77% of packages

Maintenance94

Actively maintained with recent releases

Popularity3

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity33

Early-stage or recently created project

 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

Every ~0 days

Total

2

Last Release

33d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/3036663?v=4)[Mike W](/maintainers/enlivenapp)[@enlivenapp](https://github.com/enlivenapp)

---

Top Contributors

[![enlivenapp](https://avatars.githubusercontent.com/u/3036663?v=4)](https://github.com/enlivenapp "enlivenapp (2 commits)")

### Embed Badge

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

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

###  Alternatives

[shyim/opensearch-php-dsl

OpenSearch/Elasticsearch DSL library

186.7M12](/packages/shyim-opensearch-php-dsl)[awesome-nova/dependent-filter

Dependent filters for Laravel Nova

26190.2k](/packages/awesome-nova-dependent-filter)

PHPackages © 2026

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