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