Lalavel Scout에서 Algolia를 사용하여 전체 텍스트 검색을 수행했습니다!

하는 일


전체 텍스트 검색 기능 설치

환경


Laravel 5.8

카탈로그


1. Algolia가 무슨 뜻이에요?
2. Laravel에서 Algolia 사용 준비
3. 검색 테스트에 사용할 가상 데이터 만들기 + Algolia에 데이터 추가
4. 실제 검색!

Algolia가 무슨 뜻이에요?


Algoria는 전문 검색 엔진의 서비스로 인기가 높다.
홈페이지 → https://www.algolia.com/
위도 경도 데이터에 로그인하면 위치 정보 검색도 간단하게 설치할 수 있다.또 이번에 라벨에서 실시되면 다른 언어 프레임워크도 자유롭게 사용할 수 있다.
여기서 Documentation

API REFERENCE 중에서 선택할 수 있습니다!

사이트 내 어디에 무엇이 있는지 알기는 어렵지만 그곳을 알게 되면 모든 사람의 설명이 친절하다.

Laravel에서 Algolia를 사용할 예정입니다.


먼저 다음 명령으로 Scout를 설치합니다.
composer require laravel/scout
이렇게 하면 Scout를 사용할 수 있다.Scout는 Laravel 공식 문서에 상세한 설명을 담고 있습니다.
그리고 다음 명령으로 config 디렉터리 scout.php 를 만듭니다.
php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"
그리고 scout.php
'queue' => true,
에서 설명한 대로 해당 매개변수의 값을 수정합니다.
그런 다음 Algolia 계정을 생성하여 API 키 및 키를 가져옵니다.
그나저나 첫 번째 시용 무료 기간은 14일이고 그 이후에는 매달 돈을 써야 하는데...또 무료 기간 기록의 최대 수도 줄어들었다.(자유롭다면 1만 건, 매달이면 계획에 따라 바뀐다. 자세한 사항은 공식 홈페이지에서)
필자는 회사 옆 자리에 있는 사람에게 열쇠를 빌려서 만드는 방법을 몰라서 ()
키를 생성한 후 .env 파일에 다음 내용을 추가하십시오.
ALGOLIA_APP_ID=生成したAPIキー
ALGOLIA_SECRET=生成したシークレットキー
마지막으로 다음 명령으로 Algolia PHP SDK를 설치하고 준비를 마칩니다.
composer require algolia/algoliasearch-client-php:^2.2

검색 테스트용 가상 데이터 만들기 + Algolia에 데이터 추가


우선 검색이 정상적으로 작동하는지 확인하기 위해 Faker를 사용하여 가상 데이터를 만듭니다.
우선 터미널부터 다음 명령을 통해 Faker를 사용할 수 있습니다.
composer require fzaninotto/faker
이번에 우리는people표를 만들 것입니다.그래서 종착역에서
php artisan make:migration create_people_table
php artisan make:seed PeopleTableSeeder
php artisan make:factory PersonFactory
데이터베이스/factories 이하PersonFactory.php에서 다음과 같은 변경을 할 수 있기 때문이다.
PersonFactory.php
<?php

/* @var $factory \Illuminate\Database\Eloquent\Factory */

use App\Model;
use Faker\Generator as Faker;


$factory->define(App\Person::class, function (Faker $faker) {
    return [
        'last_name' => $faker->lastName,
        'first_name' => $faker->firstName,
        'company' => $faker->company,
        'location' => $faker->city,
        'birth_year' => $faker->year,
        'birth_month' => $faker->month,
    ];
});
그리고 아래와 같이 암호 파일을 수정합니다
PeopleTableSeeder.php
<?php

use Illuminate\Database\Seeder;

class PeopleTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        factory(App\Person::class, 1000)->create();
    }
}

1000은 가상 데이터를 만드는 수량이기 때문에 좋아합니다~
마지막 DatabaseSeeder.phpDatabaseSeeder.php

<?php

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    /**
     * Seed the application's database.
     *
     * @return void
     */
    public function run()
    {
        $this->call(PeopleTableSeeder::class);
    }
}
결혼식이야!
php artisan db:seed
지금까지 나는 데이터베이스의people표에 1000개의 가상 데이터가 있다고 생각한다.
그리고 이 데이터를 Algoria에 넘겨서 전체 텍스트 검색을 할 수 있도록 하세요.
내가 먼저 개인 모형을 하나 만들게.
php artisan make:model PersonModel
그런 다음 모델을 다음과 같이 변경합니다.
Person.php
<?php

namespace App;

use Laravel\Scout\Searchable;
use Illuminate\Notifications\Notifiable;
use Illuminate\Database\Eloquent\Model;

class Person extends Model
{
    use Searchable;
    use Notifiable;

    public function searchableAs()
    {
        return 'people_index';
    }

    public function toSearchableArray()
    {
        $array = $this->toArray();

        $array = $this->transform($array);


        return $array;
    }

}
SearchableAs 방법'people_index'에 추가하면 Algolia 옆에 people이라는 테이블(?)이 있습니다에서 설명한 대로 해당 매개변수의 값을 수정합니다.
public function searchableAs()
    {
        return 'people_index';
    }
이것은 toSearchableArray 방법에 어떤 데이터를 추가하는지 설명합니다.
Laravel의 공식 문서에는 기술되지 않았지만toSearchableArray는 where와whereBetween에 필요한numericvalue를 정의하지 않았기 때문에 이러한 처리를 하려면 $array = $this->transform($array);를 추가하여 데이터 형식의 변환을 할 수 있습니다.
그런 다음 검색 드라이버에 데이터를 추가합니다.다음 명령을 통해 완료합니다.
php artisan scout:import 'App\Person'

실제 검색!


검색 결과를 얻기 위해 컨트롤러를 생성합니다.
php artisan make:controller PersonController
그런 다음 컨트롤러를 다음과 같이 편집합니다.
PersonController.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Name;
use App\Person;


class PersonController extends Controller
{
    public function index(Request $request){


        $results = Person::search($request->str_1)->get();
        return view('top.index')->with('results',$results);

    }

}

(전문 텍스트 검색 양식의 input의name을str_1로 설정)
(라우팅과view의 쓰기 생략)
가능하다면 검색 폼에 원하는 문자열을 입력하여 검색할 수 있습니다.참고로 $results뷰에 직접 표시되면 json형으로 돌아오는 것을 확인할 수 있습니다!

마지막


아무튼 설치가 쉬워요.
다른 것도 많이 맞춤 제작할 수 있을 것 같아요.실제 설치에서 알아차린 점을 다시 투고할 수 있다면 좋겠다.
이번 참고 문헌은 라벨 공식 문서뿐이다.
Stackshare로 조사를 해보면 Amazon elasticsearch 서비스에서 갈아타는 분들도 많은 것 같아요. Algolia가 높은 평가를 받은 것 같아요!(내 생각에)
돈을 써야 하는데 역시 유료 콘텐츠가 최고네요~

보충하여 기록하다


Faker는 기본값이면 영어로 들어가기 때문에 일본어 데이터를 원한다면config/app.phpconfig/app.php
'faker_locale'=>'ja_JP'
추가하십시오!
현금이 있을지도 몰라요. 그래서 종착역에 있어요.
php artisan config:cache
잊지 마.

참고로 보도하다


Instant Search with Laravel Scout & Algolia
Nuxt.js+Algolia 전문 검색 가능한 작업 관리 응용 프로그램을 실현하는 Hanzuon!

좋은 웹페이지 즐겨찾기