У меня есть такой код, который ищет по текстовому индексу:
$expr = $queryBuilder->expr()->operator('$text', ['$search' => $this->value]);
$result = $queryBuilder->equals($expr)->getQuery()->execute();
Но результат не сортируется по релевантности, которую я хочу.
Я нашел некоторую информацию здесь, но не мог понять, как добавить оценку поля в результат поиска с помощью Doctrine.
Я думаю, это было бы легко оттуда просто добавить:
$queryBuilder->sort('score');
Я не смог найти соответствующую документацию, но я нашел эту проблему в проекте Github repo. Эта проблема имеет веху в версии 1.2.0, но, похоже, она уже выпущена в ветки 1.1.x. Эта проблема была закрыта с помощью этой фиксации.
Из фиксации кажется, что все, что вам нужно для сортировки результатов с помощью метаданных textScore, - это один дополнительный вызов метода в построителе запросов:
$result = $queryBuilder
->equals($expr)
->sortMeta('fieldToSearch', 'textScore') // <- this
->getQuery()
->execute();