Sphinx PHP는 개발자가 강력한 검색 기능을 실현할 수 있도록 효율적인 전체 텍스트 검색 엔진입니다. 개발 과정에서 여러 테이블에서 공동 검색을 수행하고 검색 결과를 결합하여 표시해야합니다. 이 기사에서는 Sphinx PHP를 사용 하여이 기능을 구현하는 방법을 설명하고 관련 코드 예제를 제공합니다.
먼저 Sphinx Php를 설치해야합니다. Composer를 종속성 관리 도구로 사용하면 프로젝트의 Composer.json 파일에 다음 종속성을 추가 할 수 있습니다.
{ "필요하다": { "SphinxSearch/Sphinx-PHP": "^2.2" } }
설치가 완료되면 Composer Install 명령을 실행하여 종속성을로드하십시오.
멀티 테이블 조인트 검색을 수행하려면 먼저 Sphinx의 인덱스를 구성해야합니다. 두 개의 테이블이 있다고 가정합니다. 하나는 사용자 이름과 나이를 포함하는 사용자 테이블입니다. 다른 하나는 제품 테이블이며 제품의 이름과 설명이 포함되어 있습니다. 우리는이 두 테이블에서 검색하고 결과를 병합 할 수 있기를 원합니다.
Sphinx Configuration 파일에서 먼저 사용자 테이블 및 제품 테이블에 해당하는 두 개의 인덱스를 정의하십시오. 예제 구성은 다음과 같습니다.
index users_index { 소스 = 사용자 경로 =/var/data/users ... } <p>index products_index {<br> 소스 = 제품<br> 경로 =/var/data/products<br> ...<br> }<br>
다음으로 SearchD 구성에서 병합 인덱스를 정의합니다.
index my_index { 유형 = 분산 local = user_index local = products_index }
이러한 방식으로 My_Index 라는 조인트 인덱스를 만듭니다. 여기에는 users_index 및 products_index의 두 가지 로컬 인덱스가 포함되어 있습니다.
다음으로 Sphinx PHP를 통해 연합 검색을 수행 할 수 있습니다. 먼저 Sphinx 클라이언트 인스턴스를 생성하고 Sphinx 서버에 연결해야합니다.
require_once '공급 업체/autoload.php'; <p>Sphinx \ SphinxClient를 사용하십시오.</p> <p>// 스핑크스 클라이언트 인스턴스를 만듭니다<br> $ client = new SphinxClient ();</p> <p>// 스핑크스 서버에 연결합니다<br> $ client-> setServer ( '127.0.0.1', 9312);<br>
그런 다음 쿼리 옵션을 설정하고 검색 작업을 수행 할 수 있습니다.
// 쿼리 옵션 세트 $ client-> setMatchMode (sphinxClient :: sph_match_all); // $ client-> setLimits (0, 10)를 완전히 일치시킵니다. // 반환 된 결과 수를 설정합니다<p> // 검색 작업을 수행합니다<br> $ result = $ client-> query ( 'keyword', 'my_index');</p> <p>// 검색 결과를 프로세스합니다<br> if ($ result! == false) {<br> if ($ result [ 'total']> 0) {<br> foreach ($ result [ 'matches'] as $ match) {<br> echo $ match [ 'id']. ':'. $ match [ 'weight']. "\N";<br> }<br> } 또 다른 {<br> 에코 '일치가 발견되지 않았습니다. ';;<br> }<br> } 또 다른 {<br> Echo '검색에 실패했습니다. ';;<br> }<br>
위의 예는 Sphinx PHP를 통한 다중 테이블 조인트 검색 및 결과 병합을 구현하는 방법을 보여줍니다. 인덱스를 합리적으로 배치하고 Sphinx PHP가 제공하는 검색 기능을 사용하여 개발자는 여러 데이터 테이블에서 공동 쿼리를 쉽게 수행하고 검색 결과의 반환을 최적화 할 수 있습니다. 이 기사가 귀하의 개발 작업에 도움이되기를 바랍니다.