Я хотел бы найти лучший матч с запросом mongo odm на Symfony. У меня есть функция, которая ищет объекты с массивом терминов.Найти лучший матч с Mongo ODM
Здесь в Exemple:
Я хочу найти всех пользователей, которые nammed «Пола», «Питер» и «Смит». Итак, мой массив $ search = array ('Paul', 'Peter', 'Smith');
У меня есть 3 пользователей, которые соответствуют этому запросу:
- Питер Андерсон
- Paul Smith
- Пол Питер Смит
Так что я хотел бы, чтобы этот порядок запроса пользователи, как это :
- Paul Peter Smith
- Paul Smith
- Питер Андерсон
Вот мой текущий метод:
public function search($search) {
$query = $this->createQueryBuilder('AcmeDataBundle:users');
$users = $query
->field('name')->in($search)
->getQuery()->execute();
return $users;
}
Есть ли у вас какие-либо понятия о том, как я могу это сделать?
Благодаря
Это не ответ на ваш вопрос, но вы действительно должны использовать правильный инструмент для поиска текста, search, lucene, solr –
Использование инструмента поиска действительно лучше, но если вы хотите «забить» внутри mongodb, вы можете пойти по карте уменьшить: https://docs.mongodb.org/manual/core/map-reduce/ –
@ RenatoMendesFigueiredo, да, я искал mapReduce, но я не понимаю, как это работает, и я не нахожу пример, который может мне помочь. – Shked0wn