현재 위치: > 최신 기사 목록> Sphinx PHP를 사용한 다중 테이블 공동 검색 및 결과 병합을위한 모범 사례

Sphinx PHP를 사용한 다중 테이블 공동 검색 및 결과 병합을위한 모범 사례

M66 2025-06-26

개요

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_indexproducts_index의 두 가지 로컬 인덱스가 포함되어 있습니다.

검색 작업을 수행하십시오

다음으로 Sphinx PHP를 통해 연합 검색을 수행 할 수 있습니다. 먼저 Sphinx 클라이언트 인스턴스를 생성하고 Sphinx 서버에 연결해야합니다.

require_once &#39;공급 업체/autoload.php&#39;;
<p>Sphinx \ SphinxClient를 사용하십시오.</p>
<p>// 스핑크스 클라이언트 인스턴스를 만듭니다<br>
$ client = new SphinxClient ();</p>
<p>// 스핑크스 서버에 연결합니다<br>
$ client-> setServer ( &#39;127.0.0.1&#39;, 9312);<br>

그런 다음 쿼리 옵션을 설정하고 검색 작업을 수행 할 수 있습니다.

// 쿼리 옵션 세트 $ client-> setMatchMode (sphinxClient :: sph_match_all); // $ client-> setLimits (0, 10)를 완전히 일치시킵니다. // 반환 된 결과 수를 설정합니다<p> // 검색 작업을 수행합니다<br>
$ result = $ client-> query ( &#39;keyword&#39;, &#39;my_index&#39;);</p>
<p>// 검색 결과를 프로세스합니다<br>
if ($ result! == false) {<br>
if ($ result [ &#39;total&#39;]> 0) {<br>
foreach ($ result [ &#39;matches&#39;] as $ match) {<br>
echo $ match [ &#39;id&#39;]. &#39;:&#39;. $ match [ &#39;weight&#39;]. "\N";<br>
}<br>
} 또 다른 {<br>
에코 &#39;일치가 발견되지 않았습니다. &#39;;;<br>
}<br>
} 또 다른 {<br>
Echo &#39;검색에 실패했습니다. &#39;;;<br>
}<br>

요약

위의 예는 Sphinx PHP를 통한 다중 테이블 조인트 검색 및 결과 병합을 구현하는 방법을 보여줍니다. 인덱스를 합리적으로 배치하고 Sphinx PHP가 제공하는 검색 기능을 사용하여 개발자는 여러 데이터 테이블에서 공동 쿼리를 쉽게 수행하고 검색 결과의 반환을 최적화 할 수 있습니다. 이 기사가 귀하의 개발 작업에 도움이되기를 바랍니다.