2014-02-25 4 views
0
$dsn="mysql:host=127.0.0.1; dbname=test; charset=utf8;"; 
$username="member"; 

$password=""; 
$options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'); 

$db=new PDO($dsn, $username, $password, $options); 
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, FALSE); 
$db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); 

$query=$db->prepare(" 
    SELECT * 
    FROM test WHERE MATCH (name, location) AGAINST (:search IN BOOLEAN MODE) 
    LIMIT 0, 10 
"); 
$query->bindValue(':search', $search, PDO::PARAM_STR); 
$query->execute(); 
while($data=$query->fetch(PDO::FETCH_ASSOC)){ 

} 

전체 텍스트 검색에 대해 PDO를 사용하는 mysql 쿼리가 있습니다. 현재 스핑크스 검색이 설치되어 있습니다.PDO의 스핑크스 검색

제 질문은 스핑크스 검색 색인을 통해 쿼리하고 PHP PDO를 사용하여 MySQL에서 데이터를 가져 오는 방법입니다.

답변

2

두 개의 PDO 연결이 필요합니다. 하나는 SphinxSearch Server (Sphinx는 mysql과 호환되는 바이너리 프로토콜 인 SphinxQL을 사용하므로 PDO와 함께 작동합니다). 또 다른 MySQL 서버.

SPhinx 연결을 통해 SphinxQL 쿼리를 실행하십시오. ID 목록을 가져옵니다.

해당 ID 목록을 MySQL 쿼리에 연결하여 실제 행 데이터를 가져옵니다. IN (..) 필터 기능을 사용하십시오.