sphinx配置与使用

   最近公司有个老项目想做个app,之前已经累积了蛮多数据,做接口给安卓对接时发现模糊查询实在太慢,所以就给这个接口重做做成用sphinx来查询了,几十万数据一下子就查出来了,果然是查询神器啊!另外老项目服务器环境是windows的,所以这里的随笔也是windows环境下的

1. 直接在 http://www.sphinxsearch.com/downloads.html 找 到最新的 windows 版本,我这里下的是 32位的2.1.5的版本,下载后解压你喜欢的目录下;

2.解压后配置一个sphinx.conf的文件,直接丢在sphinx/bin目录就好;

3.sphinx.conf代码,你可以复制进去改一下参数和路径

#配置数据源
sourceIndex
{
	#要索引的数据库类型(mysql, pgsql, mssql, xmlpipe, xmlpipe2, odbc)
	type			= mysql
	#mysql服务器地址
	sql_host		= localhost  
	#数据库用户
	sql_user		= root
	#数据库密码
	sql_pass		= 
	#要进行全文索引的数据库
	sql_db			= 
	#数据库端口
	sql_port		= 3306
	#数据源的编码字符
	sql_query_pre		= SET NAMES utf8
	sql_query_pre           = SET SESSION query_cache_type=OFF
	#数据源配置
	sql_query = select id,title from pro_co
	#sphinx需要读取的数据表主键信息
	sql_query_info = select id,title from pro_co where id=$id
}
#配置数据源索引
index myIndex
{

	source			= Index
	path			= D:/sphinx/data/
	#支持中文
    ngram_len       = 1
    ngram_chars      = U+3000..U+2FA1F
	dict			= keywords
	mlock			= 0
	morphology		= none
	min_word_len		= 1
	charset_type		= utf-8
	charset_table		= 0..9, A..Z->a..z, _, a..z, U+410..U+42F->U+430..U+44F, U+430..U+44F
}




indexer
{
	mem_limit		= 128M
}

searchd
{

	listen			= 9312
	listen			= 9306:mysql41
	log			= D:sphinxlogsearchd.log
	query_log		= D:sphinxlogquery.log
	read_timeout		= 5
	client_timeout		= 300
	max_children		= 30
	persistent_connections_limit	= 30
	pid_file		= D:sphinx/log/searchd.pid
	max_matches		= 1000
	seamless_rotate		= 1
	preopen_indexes		= 1
	unlink_old		= 1
	mva_updates_pool	= 1M
	max_packet_size		= 8M
	max_filters		= 256
	max_filter_values	= 4096
	max_batch_queries	= 32
	workers			= threads 
}

  

4,接下来用win+r输入cmd到sphinx/bin目录 输入 indexer.exe --all   

5 , 接下来再输入searchd

ok差不多了

上面的配置已经配了中文搜索

接下来就是新建一个php文件了

<?php
require './sphinxapi.php';
$s = new SphinxClient();
$s->SetServer('localhost',9312);
$result = $s->Query('奥迪');
 var_dump($result);
?>

就能使用sphinx查到你想要的了,真是简单粗暴

原文地址:https://www.cnblogs.com/doanddo/p/7637866.html