2015-02-03 5 views
0

Как сделать работу по поиску текста mongodb в Laravel? Пожалуйста, предложите.Laravel + Mongodb полный текстовый поиск

я могу сделать это на терминале -

db.coupons.find({ $text: { $search: "Search me here" } }) 

Но не знаю, как это сделать в Laravel.

ответ

0

Добавить jenssegers/laravel-mongodb пакет в ваш composer.json и установить его через composer update. Посетите добавленную ссылку, там вы получите хороший источник для связи с mongodb-laravel.

Вы пробовали что-то вроде:

$users = User::with(array('posts' => function($query) 
{ 
    $query->where('title', 'like', '%first%'); 

}))->get(); 

посмотреть, если это помогает.

+0

Я уже использую его. Но не знаете, как использовать полнотекстовый поиск. – dang

0

Поскольку вы используете https://github.com/jenssegers/laravel-mongodb, в соответствии с вашим кодом вы можете сделать сказать

$ купоны = купоны :: где ('$ текст' => [ '$ найти' => 'Поиск меня здесь']) ;

})) -> get();

0

Для поиска с использованием laravel mongodb (с jenssegers/laravel-mongodb) необходимо сначала создать индекс. Пример: db.articles.createIndex({ "subject" : "text" }), где «subject» - это атрибут, в котором текст выполняет поиск.

Тогда вы можете попробовать запрос в MongoDB: db.articles.find({ $text: { $search: "coffee" } }) и сделать это таким образом, чтобы Laravel:

$word = "coffee"; 
$response = Article::whereRaw(array('$text'=>array('$search'=> $word)))->get(); 

Если вы хотите выполнить поиск по фразе вам нужно использовать те кавычки. В mongodb: db.articles.find({ $text: { $search: "\"coffee shop\"" } }) и laravel:

$word = "coffee shop"; 
$response = Article::whereRaw(array('$text'=>array('$search'=> "\"" . $word . "\"")))->get(); 
Смежные вопросы