Можно ли искать по нескольким индексам, а затем отображать результаты из нескольких таблиц, используя запрос 1 ::search
в моем контроллере с помощью Algolia?
Посмотрите на снимок экрана ниже. Позвольте мне привести пример, я хочу сделать что-то вроде этого:
if($request->has('q')) {
$jobPosts = DB::table('job_posts')
->join('employer_profiles', 'employer_profiles.id', '=', 'job_posts.employer_profile_id')
->where('job_title', 'like', '%'.$request->get('q').'%')
->orWhere('company_name', 'like', '%'.$request->get('q').'%')
->orWhere('city', 'like', '%'.$request->get('q').'%')->get();
return $jobPosts->count() ? $jobPosts : $error;
}
С этим запросом sql есть 2 проблемы. Во-первых, он не использует метод ::search
, что-то вроде этого $jobPosts = JobPost::search($request->q)->get();
. Поэтому я не думаю, что это зарегистрируется в Algolia. Во-вторых, с помощью этого запроса я могу искать по job_title, company_name или city, и он отобразит правильную запись. Но если я попытаюсь найти 2 из этих столбцов, например, по job_title и city, «Graphi c Designer Toronto», это не сработает, ничего не вернется. Это то, что я имею в виду под полнотекстовым поиском, и это тот тип функциональности, который мне нужен.
Как я могу это сделать?
Мой второй вопрос, я заметил с помощью Laravel Scout и Algolia, Algolia имеет «Vue InstantSearch» и «автозаполнение. js». Я заметил, что это клиентские решения. Что лучше поиск на стороне клиента или поиск на стороне сервера и нужны ли нам оба варианта?