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

AbandonedTypo3-flow-package[Search &amp; Filtering](/categories/search)

techdivision/search
===================

Provides a search interface with extensible implementation

21261PHP

Since Aug 26Pushed 6y ago2 watchersCompare

[ Source](https://github.com/mwitte/TechDivision.Search)[ Packagist](https://packagist.org/packages/techdivision/search)[ RSS](/packages/techdivision-search/feed)WikiDiscussions master Synced 2mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

!!DEPRECATED!!

TechDivision.Search
===================

[](#techdivisionsearch)

This package provides an interface for the [TechDivision.Neos.Search](https://github.com/mwitte/TechDivision.Neos.Search) package. There are two different implementations provided:

### Solr Rest

[](#solr-rest)

This implementation uses the default php curl extension. In most cases you should use this provider. It works with Apache Solr 4.x and 3.6.x

### Solr Extension

[](#solr-extension)

This implementation uses the solr php extension:

Currently the php solr extension works only with Apache Solr 3.6.x !

Add other search backend
------------------------

[](#add-other-search-backend)

The search backend is completely convertible. For adding a search backend(mysql, OpenSearchServer etc.) simply implement the

```
\TechDivision\Search\Provider\ProviderInterface

```

in your package. For using your own Provider with for example the TechDivision.Neos.Search package look into the documentation of TechDivision.Neos.Search package.

Design decisions
----------------

[](#design-decisions)

I created a dedicated "search" package to get the opportunity to change the backend logic to another logic by configuration. With this (for basic requirements) generic documents and fields are various backend solutions possible. This hole package was created by test-driven-development with 100% code coverage. One main paradigm was "separation of concerns" so there are many small classes with small methods.

Testing
-------

[](#testing)

The TechDivision.Search is 100% test covered by unit and functional tests. Uncovered:

The method "initializeObject" in the class

```
TechDivision\Search\Provider\Solr\Extension\Provider

```

It initializes the php solr extension's solr client which should be covered by the developers of the solr php extension.

The class

```
TechDivision\Search\Provider\Solr\Rest\CurlClient

```

It initializes the php curl extension. There is really few logic. Probably i'll find a solution to test is in future.

There are some other methods uncovered, these methods contain no logic and are only for dependency injection by the TYPO3 Flow framework. These should be covered by the framework an are ignored for code coverage as well.

For the functional tests is a solr server is required! In my opinion are unit tests significantly more useful then functional tests.

The functional tests are currently not suitable, the last changes in the TYPO3 Flow framework made it nearly impossible to cover the code with 100%. There is already an issue for that in forge to fix it.

Why this namespace?
-------------------

[](#why-this-namespace)

Until now this is a non-corporate project I made in my leisure time. I chose this namespace to participate at a company internal contest.

Licence
-------

[](#licence)

This belongs to the TYPO3 Flow package "TechDivision.Search"

It is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, either version 3 of the License, or (at your option) any later version.

Copyright (C) 2013 Matthias Witte

###  Health Score

21

—

LowBetter than 19% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity14

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity36

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.

### Community

Maintainers

![](https://www.gravatar.com/avatar/343dcb03a86553b7ba1c14aa008fe22edf0d960048cf97eb9ea1351e03e29f48?d=identicon)[mwitte](/maintainers/mwitte)

---

Top Contributors

[![mwitte](https://avatars.githubusercontent.com/u/1611200?v=4)](https://github.com/mwitte "mwitte (14 commits)")

### Embed Badge

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

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

###  Alternatives

[ruflin/elastica

Elasticsearch Client

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

PHP Client for OpenSearch

15024.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)
