텍스트 검색
개요
이 가이드 에서는 Laravel MongoDB 사용하여 텍스트 검색 실행 방법을 학습 수 있습니다.
텍스트 검색을 사용하여 지정된 필드에 용어 또는 문구가 포함된 문서를 검색할 수 있습니다. 용어는 공백 문자를 제외한 일련의 문자입니다. 문구는 임의의 수의 공백 문자가 있는 일련의 용어입니다.
이 가이드 텍스트 검색 에 사용할 수 있는 Eloquent 모델 메서드를 설명하고 예제를 제공합니다. Laravel 통합의 Eloquent 모델에 대해 자세히 학습 Eloquent 모델 섹션을 참조하세요.
시작하기 전에
이 가이드의 코드 예제를 실행하려면 빠른 시작 튜토리얼을 완료하세요. 이 튜토리얼에서는 샘플 데이터를 사용하여 MongoDB Atlas 인스턴스를 설정하고 Laravel 웹 애플리케이션에서 다음 파일을 만드는 방법에 대한 지침을 제공합니다.
Movie.php
파일에movies
collection의 문서를 나타내는Movie
모델이 포함되어 있습니다.MovieController.php
파일에 데이터베이스 작업을 실행하는show()
함수가 포함되어 있습니다.browse_movies.blade.php
파일에는 데이터베이스 작업의 결과를 표시하는 HTML 코드가 포함되어 있습니다.
다음 섹션에서는 Laravel 애플리케이션에서 파일을 편집하여 찾기 작업 코드 예제를 실행하고 예상 출력을 보는 방법을 설명합니다.
Atlas Search 텍스트 필드
텍스트 검색 수행하려면 먼저 텍스트 값 필드에 텍스트 인덱스 만들어야 합니다. 인덱스 생성에 대해 자세히 학습 스키마 빌더 가이드 의 인덱스 관리 섹션을 참조하세요.
where()
메서드에 전달하는 쿼리 필터의 $text 연산자 뒤에 $search
필드를 사용하여 텍스트 Atlas Search를 수행할 수 있습니다. $text
연산자는 텍스트 인덱스 필드에 대해 텍스트 Atlas Search를 수행합니다. $search
필드는 Atlas Search에서 사용할 텍스트를 지정합니다.
where()
메서드를 사용하여 쿼리 를 작성한 후 get()
메서드를 연결하여 쿼리 결과를 조회 합니다.
이 예제에서는 Movie
Eloquent 모델에서 where()
메서드를 호출하여 plot
필드에 "love story"
구문이 포함된 문서를 조회합니다. 이 텍스트 Atlas Search를 수행하려면 컬렉션에 plot
필드에 텍스트 인덱스가 있어야 합니다.
쿼리를 지정하려면 다음 구문을 사용합니다.
$movies = Movie::where('$text', ['$search' => '"love story"']) ->get();
browse_movies
뷰에서 쿼리 결과를 보려면 MovieController.php
파일 에서 show()
함수를 다음 코드와 유사하게 편집합니다.
class MovieController { public function show() { $movies = Movie::where('$text', ['$search' => '"love story"']) ->get(); return view('browse_movies', [ 'movies' => $movies ]); } }
Title: Cafè de Flore Year: 2011 Runtime: 120 IMDB Rating: 7.4 IMDB Votes: 9663 Plot: A love story between a man and woman ... Title: Paheli Year: 2005 Runtime: 140 IMDB Rating: 6.7 IMDB Votes: 8909 Plot: A folk tale - supernatural love story about a ghost ... Title: Por un puèado de besos Year: 2014 Runtime: 98 IMDB Rating: 6.1 IMDB Votes: 223 Plot: A girl. A boy. A love story ... ...
검색 점수
텍스트 Atlas Search는 각 결과가 string 쿼리 필터의 과 얼마나 일치하는지를 나타내는 숫자 텍스트 점수 를 할당합니다. orderBy()
메서드를 사용하여 textScore
메타데이터 필드를 정렬하면 관련성별로 결과를 정렬할 수 있습니다. $meta 연산자를 사용하여 이 메타데이터에 액세스할 수 있습니다.
$movies = Movie::where('$text', ['$search' => '"love story"']) ->orderBy('score', ['$meta' => 'textScore']) ->get();
팁
메서드에 orderBy()
대해 자세히 학습 쿼리 출력 수정 가이드 의 쿼리 결과 정렬 섹션을 참조하세요.
추가 정보
Laravel 통합을 사용하여 찾기 작업을 수행하는 방법을 보여주는 실행 가능한 코드 예제를 보려면 다음 사용 예제를 참조하세요.