PHPackages                             lpi-lab/search-bundle - 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. lpi-lab/search-bundle

ActiveSymfony-bundle[Search &amp; Filtering](/categories/search)

lpi-lab/search-bundle
=====================

A bundle that use the lucene search engine

0.1.8(11y ago)2541ApachePHPPHP &gt;=5.3.3

Since Apr 28Pushed 10y ago3 watchersCompare

[ Source](https://github.com/LaPetiteIndustry/search-bundle)[ Packagist](https://packagist.org/packages/lpi-lab/search-bundle)[ RSS](/packages/lpi-lab-search-bundle/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (2)Versions (10)Used By (0)

search-bundle
=============

[](#search-bundle)

The search bundle is a bundle that offer to you a light search engine. It works on lucene search library and include zend components.

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

[](#installation)

1. in AppKernel

```
    new Ivory\LuceneSearchBundle\IvoryLuceneSearchBundle(),
    new Lpi\Bundle\SearchBundle\LpiSearchBundle(),
```

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

[](#configuration)

1. in app/config/config.yml

```
    ivory_lucene_search:

        # Index identifier
        search_index:
            # Path to store the index (Required)
            path: %kernel.cache_dir%/search_index

            # Index analyser (Optional)
            # See http://framework.zend.com/manual/en/zend.search.lucene.charset.html
            analyzer: ZendSearch\Lucene\Analysis\Analyzer\Common\Text\CaseInsensitive

            # Max Buffered documents (Optional)
            # See http://framework.zend.com/manual/en/zend.search.lucene.index-creation.html#zend.search.lucene.index-creation.optimization.maxbuffereddocs
            max_buffered_docs: 10

            # Max merge documents (Optional)
            # See http://framework.zend.com/manual/en/zend.search.lucene.index-creation.html#zend.search.lucene.index-creation.optimization.maxmergedocs
            max_merge_docs: 10000 # (default: PHP_INT_MAX)

            # Merge factor (Optional)
            # See http://framework.zend.com/manual/en/zend.search.lucene.index-creation.html#zend.search.lucene.index-creation.optimization.mergefactor
            merge_factor: 10

            # Index directory permission (Optional)
            # See http://framework.zend.com/manual/en/zend.search.lucene.index-creation.html#zend.search.lucene.index-creation.permissions
            permissions: 0777

            # Auto optmized flag (Optional)
            # If this flag is true, each time you request an index, it will be optmized
            # See http://framework.zend.com/manual/en/zend.search.lucene.index-creation.html#zend.search.lucene.index-creation.optimization
            auto_optimized: false

            # Query parser encoding (Optional)
            # See http://framework.zend.com/manual/en/zend.search.lucene.searching.html#zend.search.lucene.searching.query_building.parsing
            query_parser_encoding: "UTF-8" # (default: "")
```

2. For each entities you want to be indexed, you will have to add the "Lpi\\Bundle\\SearchBundle\\Model\\IndexableInterface" an entity need to have these 4 methods:
    - getId()
    - getTitle()
    - getSlug()
    - getDescription()
3. in app/config/config.yml

```
    lpi_search:
        mappings:
            - { value: ApplicationLpiEventBundle:Event , path: programmation_detail} #name of the entity you want to be indexed
```

Usage
-----

[](#usage)

Now you have all indexes registered and you want to uses them, really easy!

in a controller for example :

```
/**
 * @param Request $request
 * @return array
 * @Route("/search", name="path_search")
 * @Template()
 * @Method({"GET", "POST"})
 */
public function searchAction(Request $request) {
    $results = null;
    if ($request->request->has('term') and '' !== $request->request->get('term')) {
        $results = $this->get('lpi_lucene.search')->search($request->request->get('term'));
    }

    return array(
        'results' => $results
    );
}
```

and the render in your view for example:

```
{% if results is defined and results|length > 0 %}
    {% for result in results %}

                {{ result.title }}

    {% endfor %}
{% else %}
    {{ 'search.result.nothing'|trans({}, 'messages') }}
{% endif %}

```

###  Health Score

27

—

LowBetter than 49% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity15

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity54

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 96.7% 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 ~1 days

Total

8

Last Release

4033d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/6907da42cacca30c3ba36b3e2196de3200a46ff30b5f55dd3269f35fe4a7e815?d=identicon)[DavidPuleri](/maintainers/DavidPuleri)

![](https://www.gravatar.com/avatar/d3f43ab3151b8a42c63d68597a9987afa8845c790d382840d4aa984eb3c2ab70?d=identicon)[jguido](/maintainers/jguido)

---

Top Contributors

[![C0d3-Russ](https://avatars.githubusercontent.com/u/632894?v=4)](https://github.com/C0d3-Russ "C0d3-Russ (29 commits)")[![DavidPuleri](https://avatars.githubusercontent.com/u/2221195?v=4)](https://github.com/DavidPuleri "DavidPuleri (1 commits)")

---

Tags

lpi zend lucene search

### Embed Badge

![Health badge](/badges/lpi-lab-search-bundle/health.svg)

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

###  Alternatives

[ruflin/elastica

Elasticsearch Client

2.3k50.4M203](/packages/ruflin-elastica)[opensearch-project/opensearch-php

PHP Client for OpenSearch

15224.3M65](/packages/opensearch-project-opensearch-php)[mailerlite/laravel-elasticsearch

An easy way to use the official PHP ElasticSearch client in your Laravel applications.

934529.3k2](/packages/mailerlite-laravel-elasticsearch)[massive/search-bundle

Massive Search Bundle

721.4M13](/packages/massive-search-bundle)[outl1ne/nova-multiselect-filter

Multiselect filter for Laravel Nova.

45802.7k3](/packages/outl1ne-nova-multiselect-filter)[handcraftedinthealps/zendsearch

a general purpose text search engine written entirely in PHP 5

39921.0k35](/packages/handcraftedinthealps-zendsearch)

PHPackages © 2026

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