sphinx 원리 및 실현

4373 단어 mysql 최적화
   mysql      ,            ,    mysql      ,       。。  sphinx                :http://www.coreseek.cn/products-install/。            。          。

 MySQL      、            ,SELECT ... WHERE ... LIKE '%...%' 

전체 텍스트 검색 방식 은 효율 이 떨 어 질 뿐만 아니 라 마스크% 와처음에 조 회 를 할 때 색인 을 사용 하지 못 하고 전체 표 스 캔 이 필요 하 며 데이터 베이스 에 대한 압력 도 매우 크다.MySQL 은 이 문제 에 대해 전문 색인 솔 루 션 을 제공 합 니 다. 이것 은 성능 과 효율 을 향상 시 킬 뿐만 아니 라 (MySQL 이 이 필드 에 색인 을 해서 검색 을 최적화 시 켰 기 때 문) 더욱 질 좋 은 검색 을 실현 합 니 다.그러나 지금까지 MySQL 은 중국어 전문 색인 을 제대로 지원 하지 못 했다.
    Sphinx(        )  ,Sphinx            。   Coreseek      ,  Coreseek          ,   sphinx   Coreseek        ,Coreseek          sphinx      ,     Sphinx        LibMMSeg  mmseg    。

Sphinx 의 기본 원리 와 검색 절차
이러한 검색 프로 세 스 는 sphinx 가 공식 적 으로 제공 하 는 API 파일 (phop 은 sphinxapi. php 를 사용 합 니 다) 을 사용 합 니 다. 먼저 phop 은 이 api 를 통 해 sphinx 서버 를 연결 하여 조회 결과 의 id 정 보 를 얻 은 다음 에 이 id 를 통 해 my sql 데이터베이스 에서 관련 데 이 터 를 얻 습 니 다.
SphinxsE – Sphinx 메모리 엔진 기반 검색
      , sphinx   mysql     ,SphinxSE        MySQL 5.x   MySQL    ,       MySQL        。     “    ”,SphinxSE            。        MySQL    searchd                。            MySQL  。

Sphinxse 사용:
MySQL 단 에서 Sphinx 결과 집합 을 추가 로 처리 해 야 할 때 (예 를 들 어 원본 문서 표 에 JOIN, MySQL 단의 추가 여과 등) 최 적 화 를 제공 합 니 다.
SphinxsE 를 통 해 검색 하려 면 특수 한 ENGINE = SPHINX 의 '검색 표' 를 만 든 다음 SELECT 문 구 를 사용 하여 검색 하고 전문 조 회 를 WHERE 자구 에 넣 어야 한다.
표 t1 만 들 기
CREATE TABLE t1

(

id INTEGER UNSIGNED NOT NULL,

weight INTEGER NOT NULL,

query VARCHAR(3072) NOT NULL,

group_id INTEGER,

INDEX(query)

) ENGINE=SPHINX CONNECTION="sphinx://localhost:9312/test1";

검색 표 앞의 세 열 유형 은 INTEGER, INTEGER, VARCHAR 이 어야 합 니 다. 이 세 열 은 각각 문서 ID, 일치 하 는 가중치 와 검색 조회 에 대응 해 야 합 니 다.검색 열 은 반드시 색인 되 어야 하고, 다른 열 은 색인 이 없어 야 한다.열 이름 이 무시 되 므 로 임의로 이름 을 지 을 수 있 습 니 다. 매개 변수 CONNECTION 은 이 표 로 검색 할 때 기본 검색 호스트, 포트 번호, 색인 을 지정 합 니 다. 문법 형식: CONNECTION = "sphinx://HOST:PORT/INDEXNAME”。
SQL 문장 실행 select d.id,d.title,d.content from t1 join documents as d on t1.id = d.id and t1.query = ' ';+—-+——————–+———————–+
| id | title | content |
+—-+——————–+———————–+
| 5 | 대학원생 이야기 | 대학원생 자율 창업 |
+—-+——————–+———————–+
1 row in set (0.04 sec)
결 과 는 우리 가 원 하 는 데 이 터 를 되 돌려 주 었 습 니 다. SphinxsE 를 이용 하여 SQL 문 구 를 아주 작은 변경 만 하면 전체 텍스트 검색 을 편리 하 게 실현 할 수 있 습 니 다!
주 색인 + 증분 색인
전제: 데이터 가 바 뀌 지 않 습 니 다.
첫 번 째 단계: 표 작성: (색인 을 저장 한 최대 기록 id)
Create table a(

Id int unsigned not null primary key,

Max_id int unsigned,

);

두 번 째 단계: 설정 파일 수정: sphinx 설정 파일 참조
STEP 3: 선행 ./bin/indexer –c ./etc/sphinx.conf –test1모든 색인 생 성 - > 데이터 원본 의 주 조 회 는 처음 실 행 됩 니 다.
STEP 4: 정기 실행:
./bin/indexer –c ./etc/sphinx.conf delta --rotate

증분 색인 파일 생 성
다섯 번 째 단계: 주 색인 에 통합
./bin/indexer –merge test1 delta –c ./etc/sphinx.conf --rotate

원본 주소:http://miliwo.com/w/730/21433

좋은 웹페이지 즐겨찾기