MongoDB + Doctrine: как отсортировать запрос по счету текстового поиска

1

У меня есть такой код, который ищет по текстовому индексу:

$expr = $queryBuilder->expr()->operator('$text', ['$search' => $this->value]);
$result = $queryBuilder->equals($expr)->getQuery()->execute();

Но результат не сортируется по релевантности, которую я хочу.

Я нашел некоторую информацию здесь, но не мог понять, как добавить оценку поля в результат поиска с помощью Doctrine.

Я думаю, это было бы легко оттуда просто добавить:

$queryBuilder->sort('score');
Теги:
doctrine
full-text-search

1 ответ

2
Лучший ответ

Я не смог найти соответствующую документацию, но я нашел эту проблему в проекте Github repo. Эта проблема имеет веху в версии 1.2.0, но, похоже, она уже выпущена в ветки 1.1.x. Эта проблема была закрыта с помощью этой фиксации.

Из фиксации кажется, что все, что вам нужно для сортировки результатов с помощью метаданных textScore, - это один дополнительный вызов метода в построителе запросов:

$result = $queryBuilder
    ->equals($expr)
    ->sortMeta('fieldToSearch', 'textScore') // <- this
    ->getQuery()
    ->execute();
  • 0
    Он просочился в 1.1.7 по ошибке, которая уже была исправлена. Так что, к сожалению, нам нужно ждать 1.2.0. Спасибо, в любом случае.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню