Полнотекстовый поиск с помощью Laravel Scout, Algolia и Vue? - PullRequest
0 голосов
/ 27 мая 2020

Можно ли искать по нескольким индексам, а затем отображать результаты из нескольких таблиц, используя запрос 1 ::search в моем контроллере с помощью Algolia?

Посмотрите на снимок экрана ниже. enter image description here Позвольте мне привести пример, я хочу сделать что-то вроде этого:

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». Я заметил, что это клиентские решения. Что лучше поиск на стороне клиента или поиск на стороне сервера и нужны ли нам оба варианта?

...