Forked from javer/JaverSphinxBundle
This bundle provides integration of Sphinx or Manticore search engine with Symfony4+.
Features:
This fork is not backwards compatible with Javer/JaverSphinxBundle
Install the bundle using composer:
composer require pluk77/symfony-sphinx-bundle
Add to your config/package/symfony_sphinx.yml
the following options:
symfony_sphinx:
host: 127.0.0.1
port: 9306
Full configuration with default values:
symfony_sphinx:
host: 127.0.0.1
port: 9306
Synthetic example of SELECT query which returns an array:
$results = $sphinx->createQuery()
->select('id', 'column1', 'column2', 'WEIGHT() as weight')
->from(['index1', 'index2'])
->where('column3', 'value1')
->andWhere('column4', '>', 4)
->andWhere('column5', [5, '6'])
->andWhere('column6', 'NOT IN', [7, '8'])
->andWhere('column7', 'BETWEEN', [9, 10])
->match('column8', 'value2')
->andMatch(['column9', 'column10'], 'value3')
->orMatch(['column9', 'column10'], 'value3')
->rawMatch('(@(first_name,alias_first_name) hello* | @first_name john)')
->orRawMatch('(@(first_name,alias_first_name) hello* | @first_name john)')
->andRawMatch('(@(first_name,alias_first_name) hello* | @first_name john)')
->groupBy('column11')
->andGroupBy('column12')
->withinGroupOrderBy('column13', 'desc')
->AndWithinGroupOrderBy('column14')
->having('weight', '>', 2)
->orderBy('column15', 'desc')
->andOrderBy('column16')
->setFirstResult(5)
->setMaxResults(10)
->setOption('agent_query_timeout', 10000)
->addOption('max_matches', 1000)
->addOption('field_weights', '(column9=10, column10=3)')
->getResults();
Entities fetched from the database using Doctrine ORM QueryBuilder by searching phrase in them using Sphinx:
$queryBuilder = $this->getRepository(Patient::class)
->createQueryBuilder('p')
->select();
$query = $sphinx->createQuery()
->select('id')
->from('patient')
->match(['last_name','first_name'], 'jo*')
->setOption('field_weights', '(last_name=10, first_name=5)')
->useQueryBuilder($queryBuilder, 'p', 'id');
$results = $query->getResults();