Docs Menu
Docs Home
/ / /
Laravel MongoDB

Scout를 사용한 전체 텍스트 검색

이 가이드 에서는 Laravel MongoDB 애플리케이션 에서 Laravel Scout 기능 사용하는 방법을 학습 수 있습니다. Scout를 사용하면 Eloquent 모델에서 전체 텍스트 검색 구현 수 있습니다. 자세히 학습 Laravel 문서에서 Laravel Scout 를 참조하세요.

Laravel MongoDB 에 대한 Scout 통합은 다음과 같은 기능을 제공합니다.

  • 모든 MongoDB 또는 SQL 모델에서 Atlas Search 인덱스 를 생성하기 위한 추상화를 제공합니다.

    중요

    스키마 빌더를 사용하여 검색 인덱스 만들기

    문서가 이미 MongoDB 에 있는 경우 MongoDB PHP 라이브러리 또는 Schema 빌더 메서드를 사용하여 검색 인덱스를 생성하여 검색 쿼리 성능을 개선합니다. 검색 인덱스 생성에 대해 자세히 학습 Atlas Search 가이드 의Create an Atlas Search Index(Atlas Search 인덱스 생성) 섹션을 참조하세요.

  • MongoDB 의 데이터를 Meilisearch 또는 Algolia 와 같은 검색 엔진 으로 자동으로 복제할 수 있습니다. MongoDB Eloquent 모델을 가져오고 인덱스 할 소스로 사용할 수 있습니다. 검색 엔진 에 대한 인덱싱 에 대해 자세히 학습 Laravel Scout 문서의 인덱싱 섹션을 참조하세요.

중요

배포 호환성

Laravel Scout는 MongoDB Atlas 배포서버에 연결할 때만 사용할 수 있습니다. 이 기능 자체 관리형 배포서버에는 사용할 수 없습니다.

이 튜토리얼에서는 Scout를 사용하여 Eloquent 모델( MongoDB 또는 SQL )에서 MongoDB Atlas Search용 문서를 합성하고 인덱스 방법을 보여줍니다.

1

애플리케이션 에서 Scout를 사용하려면 먼저 애플리케이션의 루트 디렉토리 에서 다음 명령을 실행 laravel/scout 패키지 설치합니다.

composer require laravel/scout
2

Eloquent 모델에 Laravel\Scout\Searchable 특성을 추가하여 검색 가능하게 만듭니다. 다음 예시 이 특성을 sample_mflix.movies 컬렉션 의 문서를 나타내는 Movie 모델에 추가합니다.

<?php
namespace App\Models;
use MongoDB\Laravel\Eloquent\Model;
use Laravel\Scout\Searchable;
class Movie extends Model
{
use Searchable;
protected $connection = 'mongodb';
}

Searchable 트레이트를 사용하여 문서의 서식을 다시 지정하거나, 관련 문서를 포함하거나, 문서 값을 변환할 수도 있습니다. 자세히 학습 Laravel Scout 문서의 검색 가능한 데이터 구성하기 섹션을 참조하세요.

3

애플리케이션 이 데이터베이스 연결로 MongoDB 사용하도록 구성되어 있는지 확인합니다. MongoDB 구성하는 방법을 학습 빠른 시작 가이드 의 MongoDB 연결 구성 섹션을 참조하세요.

애플리케이션 에서 Scout를 구성하려면 애플리케이션의 config 디렉토리 에 scout.php 라는 파일 만듭니다. 파일 에 다음 코드를 붙여넣어 Scout를 구성합니다.

config/scout.php
<?php
return [
'driver' => env('SCOUT_DRIVER', 'mongodb'),
'mongodb' => [
'connection' => env('SCOUT_MONGODB_CONNECTION', 'mongodb'),
],
'prefix' => env('SCOUT_PREFIX', 'scout_'),
];

앞의 코드는 다음 구성을 지정합니다.

  • SCOUT_DRIVER 환경 변수의 값을 기본값 검색 운전자 로 사용하거나, 환경 변수가 설정하다 되지 않은 경우 mongodb 를 사용합니다.

  • 검색 가능한 컬렉션 의 컬렉션 이름에 대한 접두사로 scout_ 를 지정합니다.

config/scout.php 파일 에서 사용자 지정 Atlas Search 인덱스 정의를 지정할 수도 있습니다. 자세히 학습 다음 단계의 사용자 지정 인덱스 정의 예시 참조하세요.

애플리케이션의 .env 파일 에서 다음 환경 변수를 설정하여 mongodb 을 기본값 검색 운전자 로 선택합니다.

.env
SCOUT_DRIVER=mongodb

대기열

Scout를 사용할 때는 애플리케이션의 웹 인터페이스에 대한 응답 시간을 줄이도록 대기열 운전자 구성하는 것이 좋습니다. 자세히 학습 Laravel Scout 문서의 대기열 섹션과 대기열 가이드 참조하세요.

4

Scout를 구성하고 기본값 검색 운전자 설정하다 후 애플리케이션의 루트 디렉토리 에서 다음 명령을 실행 하여 검색 가능한 컬렉션 및 검색 인덱스 만들 수 있습니다.

php artisan scout:index 'App\Models\Movie'

MongoDB 기본값 검색 운전자 로 설정하다 때문에 앞의 명령은 MongoDB database 에 Atlas Search 인덱스 사용하여 검색 컬렉션 생성합니다. 컬렉션 이름은 이전 단계에서 설정하다 접두사에 따라 scout_movies으로 지정됩니다. Atlas Search 인덱스 이름은 scout 이며 기본값 으로 다음과 같은 구성을 갖습니다.

{
"mappings": {
"dynamic": true
}
}

인덱스 정의를 사용자 지정하려면 config/scout.php 파일 의 mongodb 항목에 index-definitions 구성을 추가합니다. 다음 코드는 scout_movies 컬렉션 에 생성할 사용자 지정 인덱스 정의를 지정하는 방법을 보여줍니다.

'mongodb' => [
'connection' => env('SCOUT_MONGODB_CONNECTION', 'mongodb'),
'index-definitions' => [
'scout_movies' => [
'mappings' => [
'dynamic' => false,
'fields' => ['title' => ['type' => 'string']]
]
]
]
], ...

Atlas Search 인덱스 정의를 정의하는 방법에 대해 자세히 학습 Atlas 설명서에서 필드 매핑 정의 가이드 참조하세요.

참고

MongoDB Atlas Search 인덱스 만들고 완료하는 데 최대 1분이 걸릴 수 있으므로 scout:index 명령이 성공 메시지를 즉시 반환하지 않을 수 있습니다.

5

Scout를 사용하여 Eloquent 모델로 모델링된 소스 컬렉션 의 데이터를 검색 가능한 컬렉션 으로 복제할 수 있습니다. 다음 명령은 movies 컬렉션 의 데이터를 이전 단계에서 인덱싱된 scout_movies 컬렉션 으로 복제하고 인덱싱합니다.

php artisan scout:import 'App\Models\Movie'

문서는 Atlas Search 쿼리에 대해 자동으로 인덱싱됩니다.

가져올 필드 선택

검색 가능한 컬렉션 에 있는 소스 문서의 모든 필드가 필요하지 않을 수 있습니다. 복제하는 데이터의 양을 제한하면 애플리케이션의 속도와 성능을 향상시킬 수 있습니다.

Eloquent 모델 클래스에서 toSearchableArray() 메서드를 정의하여 가져올 특정 필드를 선택할 수 있습니다. 다음 코드는 복제 위해 plottitle 필드만 선택하도록 toSearchableArray() 을 정의하는 방법을 보여 줍니다.

class Movie extends Model
{
....
public function toSearchableArray(): array
{
return [
'plot' => $this->plot,
'title' => $this->title,
];
}
}

이 단계를 완료한 후 Laravel MongoDB 애플리케이션 의 scout_movies 컬렉션 에 대해 Atlas Search 쿼리를 수행할 수 있습니다. 전체 텍스트 검색을 수행하는 방법을 학습 Atlas Search 가이드 참조하세요.

돌아가기

캐시 및 잠금

이 페이지의 내용

  • 개요
  • Atlas Search 용 Scout 튜토리얼
  • Scout 패키지 설치
  • 모델에 검색 가능 트레이트 추가
  • 애플리케이션 에서 Scout 구성
  • Atlas Search 인덱스 만들기
  • 검색 가능한 컬렉션 으로 데이터 가져오기