Currently, my search query search only exact match and correct order. But I need that order of words is not important.
For example, news title: Neymar to PSG. I got correct results in next searches
- Neymar PSG
- Neymaar to PSG
But i have no results for:
- PSG Neymar
This is my code:
// Create search tearm partial
$searchTerms = explode(' ', $this->query->getTerm());
$searchTermPartial = '';
foreach($searchTerms as $searchTerm) {
$searchTermPartial = $searchTermPartial . '%' . $searchTerm .'%';
}
//Search part in Query
->andWhere(
$queryBuilder->expr()->orX(
$queryBuilder->expr()->like(
$queryBuilder->expr()->concat('translation.title', $queryBuilder->expr()->concat(
$queryBuilder->expr()->literal(' '), 'translation.shortDescription')), ":searchTermPartial"),
$queryBuilder->expr()->eq('o.code', ":searchTerm")
)
How to make that word order is not important ?