Laravel에서 관련성이 정렬된 여러 열에 대해 여러 키워드 검색
여러 데이터베이스 열에 대해 여러 키워드가 포함된 검색 기능을 구현하는 것은 어려울 수 있습니다. 특히 관련성에 따라 결과를 정렬해야 하는 경우. Laravel에는 이 문제를 해결하기 위한 여러 가지 접근 방식이 있습니다.
데이터베이스 쿼리를 사용한 접근 방식
이 문제를 해결하는 한 가지 방법은 여러 데이터베이스 쿼리를 구성하여 다음을 기반으로 결과를 검색하는 것입니다. 특정 기준. 가능한 구현 방법은 다음과 같습니다.
$word1 = 'word1'; $word2 = 'word2'; $word3 = 'word3'; $all = DB::table('posts') ->where('meta_name', 'like', "%{$word1}%") ->where('meta_name', 'like', "%{$word2}%") ->where('meta_name', 'like', "%{$word3}%") ->orWhere(function($query) use ($word1, $word2, $word3) { $query->where('meta_description', 'like', "%{$word1}%") ->where('meta_description', 'like', "%{$word2}%") ->where('meta_description', 'like', "%{$word3}%"); }); $twoWords = DB::table('posts') ->where('meta_name', 'like', "%{$word1}%") ->where('meta_name', 'like', "%{$word2}%") ->orWhere(function($query) use ($word1, $word2) { $query->where('meta_description', 'like', "%{$word1}%") ->where('meta_description', 'like', "%{$word2}%"); }) ->whereNotIn('id', $all->pluck('id')); $oneWord = DB::table('posts') ->where('meta_name', 'like', "%{$word1}%") ->orWhere('meta_description', 'like', "%{$word1}%") ->whereNotIn('id', $all->pluck('id')) ->whereNotIn('id', $twoWords->pluck('id')); $posts = $all->union($twoWords)->union($oneWord)->get();
이 접근 방식은 세 키워드 모두, 처음 두 키워드, 첫 번째 키워드만 기준으로 결과를 필터링합니다. 마지막으로 통합 연산자를 사용하여 결과를 결합합니다.
페이지 매김에 대한 추가 고려 사항
스크롤 시 로드 기능을 구현하려면 JavaScript 및 AJAX 요청을 통합할 수 있습니다. 사용자가 페이지 하단으로 스크롤하면 다음 결과 세트를 검색하기 위해 AJAX 요청이 전송될 수 있습니다. 쿼리 빌더의 Skip() 및 take() 메소드를 사용하여 검색할 레코드의 오프셋 및 제한을 지정할 수 있습니다.
// Retrieve the specified number of results after the last loaded result $start = $request->get('start');//how many results have already been shown $records = Post::select('*') ->skip($start) ->take($this->rowperpage) // $this->rowperpage= 4 e.g. ->get();
더 이상 스크롤할 수 있는 결과가 없는 경우를 처리해야 합니다.
위 내용은 Laravel의 여러 열에 걸쳐 정렬된 관련성 검색을 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!