검색엔진 PHP+Sphinx+Mysql 개발에 대한 자세한 예시 설명

韦小宝
풀어 주다: 2023-03-20 07:32:01
원래의
6434명이 탐색했습니다.

누구나 검색엔진에 대해 글을 쓰기 어려울 것이고, 전혀 모르고 있을 것입니다. 사실 PHP를 검색엔진 개발에도 사용할 수 있지만, 우리가 원하는 검색엔진을 개발하려면 PHP를 스핑크스와 결합해야 합니다. PHP가 어떻게 작동하는지 알고 싶습니다. 검색 엔진 개발을 하고 계십니까? 살펴보자! !

먼저 Sphinx 도구를 다운로드합니다. 공식 웹사이트 다운로드 주소는 www.sphinxsearch.com입니다. sphinx-2.2.10-release-win64.zip을 찾아 64비트용으로 다운로드하고 PHP 실행 디렉터리에 압축을 풉니다. , 후속 웹 페이지에서 결과를 보는 것이 편리합니다.

sphinx 소개:

Sphinx는 SQL Phrase Index(쿼리 구문index)의 약어입니다. Sphinx가 제공하는 API 인터페이스는 PHP, Python, Ruby, java 등 동시에 분산 전체 텍스트 검색 시스템인 MySQL용 엔진 플러그인 SphinxSE가 설계되었습니다.
장점:
고속 인덱싱은 10M/s에 도달할 수 있습니다.
고성능 검색(2-4G 텍스트 데이터에서 평균 검색 응답 시간은 0.1초 미만)
대용량 처리 가능 데이터 (현재 단일 CPU 시스템에서 100G의 텍스트 데이터, 100M의 문서를 처리할 수 있는 것으로 알려져 있음)
우수한 상관 알고리즘, 구문 유사성에 기반한 복합 순위 방법 및 통계 BM2를 제공합니다
분산 검색 지원
문서 조각 생성 기능 제공
Mysql 스토리지 엔진으로 사용하여 검색 서비스 제공 가능
부울, 구문, 단어 유사성 및 기타 검색 모드 지원
단점:
기본 키가 있어야 함
기본 키는 정수여야 합니다.
데이터 저장에 대한 책임이 없습니다.
구성이 유연하지 않습니다.

압축 해제 후 스핑크스 구조는 그림과 같습니다.


다음은 우리의 것입니다. 관련 구성, 그림의 sphinx-min.conf.in을 참조하세요. 나중에 쉽게 사용할 수 있도록 bin 디렉터리에 복사하고, 이름을 sphinx.conf로 변경하고,

내부 콘텐츠를 수정하세요.

source src1
{
	type			= mysql

	sql_host		= localhost #主机地址
	sql_user		= root#帐号
	sql_pass		=     #密码
	sql_db			= sphinx  #数据库
	sql_port		= 3306	# 数据库端口 3306
	sql_query		= SELECT id, name, age FROM users #查询语句
	sql_attr_uint		= group_id
	sql_attr_timestamp	= date_added
	sql_query_pre = set names utf8   #数据库编码
}


index test1
{
	source			= src1
	path			= D:/myapaphe/www/sphinx/data #这个一定要配置
	charset_type = utf-8 #指定编码
	ngram_len = 1        #要找中文需指定为1.
	ngram_chars = U+3000..U+2FA1F
	
}

indexer
{
	mem_limit		= 128M
}
searchd
{
	listen			= 9312
	listen			= 9306:mysql41
	log			= D:\myapaphe\www\sphinx\log\searchd.log  #进程日志
	query_log		= D:\myapaphe\www\sphinx\log\query.log    #查询日志

	read_timeout		= 5
	max_children		= 30
	pid_file		= D:\myapaphe\www\sphinx\log\searchd.pid 
	seamless_rotate		= 1
	preopen_indexes		= 1
	unlink_old		= 1
	workers			= threads # for RT to work
	binlog_path		= D:\myapaphe\www\sphinx\data
}
로그인 후 복사

위 구성이 필요합니다. 그 길은 자신의 길과 일치해야 합니다.

다음으로 쿼리 인덱스를 생성합니다.


searchd 서비스를 설치합니다.


다음으로 구성 파일을 로드합니다. :


서비스:


OK 이전 구성 작업 및 서비스 시작이 완료되었습니다. 이제 코드를 시작합니다.

sphinx 아래의 api 폴더에 test3.php를 생성하고 test3.php

<?php 
require ( "sphinxapi.php" );
$s = new SphinxClient();
$s->SetServer(&#39;localhost&#39;,9312);
$result = $s->Query(&#39;高七&#39;);
echo &#39;<pre class="brush:php;toolbar:false">&#39;;
print_r($result);
로그인 후 복사


문자가 깨져 있는 이유는 cmd가 기본값이기 때문입니다. gbk 인코딩을 브라우저에 넣어서 확인해 보겠습니다.


스핑크스는 전체 결과를 찾지 못하고 ID를 반환하여 ID를 기반으로 데이터를 확인할 수 있습니다.

쿼리 시간을 비교해 보겠습니다.


40,000개 이상의 데이터를 테스트했는데 시간이 0.001초였습니다. mysql 쿼리에 걸리는 시간을 살펴보겠습니다.


0.04초라 데이터도 많지 않고 결과도 그다지 뚜렷하지 않지만 0.039초 차이는 작지 않습니다.

이로써 스핑크스 통합이 완료되었습니다. 모두에게 도움이 되기를 바랍니다.

관련 추천:

php 기존 검색 엔진 호출에 대한 자세한 설명

방문자가 검색 엔진 스파이더인지 확인하는 PHP 함수 코드

위 내용은 검색엔진 PHP+Sphinx+Mysql 개발에 대한 자세한 예시 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿