Skip to content
A simple php/sqlite search engine for generic data.
PHP
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Classes Adjust signatures to interfaces Jan 27, 2020
Configuration FEATURE: Indexing using FULLTEXT index in MySQL/MariaDB Jan 9, 2020
LICENSE Create LICENSE Apr 20, 2014
README.md FEATURE: Indexing using FULLTEXT index in MySQL/MariaDB Jan 9, 2020
composer.json FEATURE: Indexing using FULLTEXT index in MySQL/MariaDB Jan 9, 2020

README.md

SensioLabs Insight Code Climate

Flowpack.SimpleSearch

A simple php search engine based on SQLite or MySQL. Performance is acceptable but decreases quickly with the amount of entries. Depending on the queries you want to perform a sane upper limit is somewhere around 50000 entries (for SQLite).

This package has no hard dependencies on anything so could be used in any project.

Code and API are still pretty rough. I just implemented the minimum version. A higher level query API will follow (see the ContentRepositoryAdaptor for the direction).

If you look at the code the sqlite storage of properties looks pretty strange but with SQlite3 the actual storage type is determined per row, so a column can contain different data types in each row. That should make all those empty rows more or less acceptable. We are trying to mimic a document database here after all.

Using MySQL

To use MySQL, switch the implementation for the interfaces in your Objects.yaml and configure the DB connection as needed:

Flowpack\SimpleSearch\Domain\Service\IndexInterface:
  className: 'Flowpack\SimpleSearch\Domain\Service\MysqlIndex'

Neos\ContentRepository\Search\Search\QueryBuilderInterface:
  className: 'Flowpack\SimpleSearch\ContentRepositoryAdaptor\Search\MysqlQueryBuilder'

Flowpack\SimpleSearch\Domain\Service\MysqlIndex:
  arguments:
    1:
      value: 'Neos_CR'
    2:
      value: 'mysql:host=%env:DATABASE_HOST%;dbname=%env:DATABASE_NAME%;charset=utf8mb4'
  properties:
    username:
      value: '%env:DATABASE_USERNAME%'
    password:
      value: '%env:DATABASE_PASSWORD%'

The arguments are the index identifier (can be chosen freely) and the DSN.

You can’t perform that action at this time.