>백엔드 개발 >PHP 튜토리얼 >CakePHP와 함께 스핑크스를 어떻게 사용하나요?

CakePHP와 함께 스핑크스를 어떻게 사용하나요?

PHPz
PHPz원래의
2023-06-05 22:10:321509검색

CakePHP는 강력한 기능과 유연한 디자인을 제공하는 탁월한 웹 애플리케이션 개발 프레임워크입니다. Sphinx는 대량의 데이터를 효율적으로 처리하는 데 도움이 되는 인기 있는 전체 텍스트 검색 엔진입니다.

이 기사에서는 검색 요구 사항을 더 잘 처리하기 위해 CakePHP에서 Sphinx를 사용하는 방법을 소개합니다.

  1. Sphinx 설치

먼저 Sphinx를 설치해야 합니다. Sphinx는 소스코드 설치, 바이너리 패키지 설치 등 다양한 설치 방법을 제공합니다. 여기에서는 Ubuntu Linux에서 APT를 사용하여 Sphinx를 설치하는 방법을 소개합니다.

터미널을 열고 다음 명령을 입력하세요:

sudo apt-get update
sudo apt-get install sphinxsearch

설치가 완료된 후 다음 명령을 사용하여 Sphinx가 올바르게 설치되었는지 확인할 수 있습니다.

sudo /usr/bin/searchd

모든 것이 정상이면 다음과 유사한 출력을 볼 수 있습니다:

Sphinx 3.1.1-id64-release (4b8c4635 커밋)
Copyright (c) 2001-2020, Andrew Aksyonoff
Copyright (c) 2008-2020, Sphinx Technologies Inc (http://sphinxsearch.com)

  1. Sphinx 구성

다음으로 필요에 맞게 Sphinx를 구성해야 합니다. Sphinx 구성 파일은 /etc/sphinxsearch/sphinx.conf에 있습니다. 다음 명령을 사용하여 파일을 편집할 수 있습니다.

sudo nano /etc/sphinxsearch/sphinx.conf

다음은 간단한 구성 예입니다.

source src1
{

type = mysql
sql_host = localhost
sql_user = username
sql_pass = password
sql_db = database
sql_query = 
    SELECT id, title, content 
    FROM articles

}

index idx1
{

source = src1
path = /var/lib/sphinxsearch/data/idx1
docinfo = extern
morphology = stem_en
charset_type = utf-8
min_word_len = 3

}

searchd
{

listen = 127.0.0.1:9312
log = /var/log/sphinxsearch/searchd.log
query_log = /var/log/sphinxsearch/query.log
read_timeout = 5
max_children = 30
pid_file = /var/run/sphinxsearch/searchd.pid
max_matches = 1000
seamless_rotate = 1

}

여기서 src1이라는 데이터 소스를 정의하고, 데이터 검색을 위해 MySQL 데이터베이스를 사용하며, 검색할 데이터 테이블은 기사이고, 검색할 데이터 필드는 id, title 및 content입니다. .

다음으로 idx1이라는 인덱스가 정의되고, src1이 데이터 소스로 사용되며, 인덱스 파일은 /var/lib/sphinxsearch/data/idx1 디렉터리에 저장됩니다.

마지막으로, 수신 IP 및 포트, 로그 파일 경로, 쿼리 시간 초과 등과 같은 searchd 서버의 일부 매개변수가 정의됩니다.

  1. CakePHP 모델 생성하기

다음으로 CakePHP에서 모델을 생성합니다. 다음 명령을 사용하여 Article이라는 모델 클래스를 생성할 수 있습니다:

./bin/cake baking model Article

실행 후, CakePHP는 src/Model 아래에 Article이라는 모델 클래스를 자동으로 생성합니다.

  1. CakePHP 컨트롤러 코드 작성

마지막으로 검색 요청을 처리하기 위한 CakePHP 컨트롤러 코드를 작성해야 합니다. 다음은 간단한 예입니다.

namespace AppController;
use CakeUtilitySecurity;
use CakeORMTableRegistry; HTTP 쿼리 매개변수에서 "q"라는 검색 키워드입니다.

그런 다음 SphinxClient 객체를 생성하고 Sphinx 서버 주소와 포트를 설정한 다음 검색어에 SPH_MATCH_ALL 모드를 사용하세요.

다음으로 Sphinx가 반환한 결과에서 ID를 추출하고 Articles 모델에서 이러한 기사 데이터를 찾아보세요.

마지막으로 쿼리 결과를 뷰에 표시합니다.

위 단계를 통해 Sphinx를 사용하여 CakePHP에서 전체 텍스트 검색을 구현할 수 있습니다. 실제 개발에서는 다양한 비즈니스 요구 사항을 충족하기 위해 필요에 따라 검색 기능을 더욱 확장하고 최적화할 수 있습니다.

위 내용은 CakePHP와 함께 스핑크스를 어떻게 사용하나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.