Sphinx

	Sphinx是一款免费的双许可搜索服务器。Sphinx是用C ++编写的,专注于查询性能和搜索相关性。
	
	主客户端API目前是SphinxQL,SQL的一种方言。几乎任何MySQL连接器都应该工作。此外,还提供了基本
	
	的HTTP / JSON API和许多语言(PHP,Python,Ruby,C,Java)的本机API。

	SQL,HTTP / JSON和自定义(传统)访问API
	NRT(近实时)和离线批量索引
	全文和非文本(参数)搜索
	相关性排名,从基本公式到ML模型
	来自多个服务器的联合结果

下载地址

http://sphinxsearch.com

解压重命名为sphinx

例如我解压位置:E:\dev\sphinx

安装步骤

新建一个D:\server\sphinx3\data存放索引文件
新建一个D:\server\sphinx3\log存放日志
新建一个D:\server\sphinx3\etc\sphinx.conf配置文件
如果没有etc 可新建一个etc文件夹

1、配置文件D:\server\sphinx3\bin\sphinx.conf

source doc
{
    type            = mysql
    sql_host        = localhost
    sql_user        = root
    sql_pass        = root
    sql_db          = test
    sql_port        = 3306
    sql_query_pre   = SET NAMES utf8 
    sql_query       = SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title, content FROM documents 
    sql_attr_uint       = group_id
    sql_attr_timestamp  = date_added
}


index testindex
{
    source          = doc
    path            =D:/server/sphinx3/data/testindex 
    mlock         = 0 
    min_word_len  = 2 
    min_prefix_len = 0
    min_infix_len = 1
    ngram_len = 1
	ngram_chars = U+3000..U+2FA1F 
}

indexer
{
    mem_limit       = 128M
}


searchd
{
    listen          = 9312
    listen          = 9306:mysql41
    log         = D:/dev/sphinx/log/searchd.log
    query_log       = D:/dev/sphinx/log/query.log
    read_timeout        = 5
    max_children        = 30
    pid_file        = D:/dev/sphinx/log/searchd.pid
    seamless_rotate     = 1
    preopen_indexes     = 1
    unlink_old      = 1
    workers         = threads # for RT to work
    binlog_path     = D:/dev/sphinx/data
}

2、根据配置文件里面的配置,生成索引文件

 语法:indexer.exe –c配置文件 –-all | 索引的名字
 说明:
     1、--all:为配置文件中所有的索引创建索引文件
     2、也可以使用索引的名字只为某一个索引创建索引文件
	如sphinx安装在E盘dev文件夹下,通过控制台(cmd)进入到sphinx下面的bin目录
     
     E:\dev\sphinx\bin>indexer.exe -c  E:/dev/sphinx/etc/sphinx.conf --rotate --all
	
    执行生成索引文件
    indexer.exe -c ../etc/sphinx.conf --rotate --all

3、要安装启动sphinx服务

 语法:searchd.exe –c 配置文件 --install
     例如sphinx安装在E盘dev文件夹下,通过控制台(cmd)进入到sphinx下面的bin目录

     例:E:\dev\sphinx\bin>searchd.exe -c  E:/dev/sphinx/etc/sphinx.conf --install
      
     启动服务并起别名
     说明: 配置文件路径最好是用全路径
    	 --servicename ***  开启的服务名称
     searchd.exe --install --config E:/dev/sphinx/etc/sphinx.conf --servicename SphinxSearch
 服务器端默认监听 9312 端口。
 常用命令:
     -c : 指定配置文件路径
     --stop : 停止当前服务
     --status : 查看当前状态
     --install : 安装为 windows 服务
     --delete: 删除windows服务
     --port  port: 监听的端口
     --index  indexName : 只查询某个索引,默认查询所有索引

PHP使用 sphinx

<?php
	require ( "sphinxapi.php" );	//引入文件可以放入框架中 用命名空间形式引用
	$cl = new SphinxClient ();
	$q = $_GET['key']??'化妆师'; //模拟关键字
	//$mode = SPH_MATCH_ALL;
	$host = "127.0.0.1";// sphinx的服务地址  此处用的是本地服务 切记 不是数据库地址!!!
	$port = 9312;// sphinx监听端口号
	$index = "testindex";	// 此处为配置文件中配置的索引项
	$cl->SetServer ( $host, $port );
	$cl->SetConnectTimeout(10);
	$cl->SetArrayResult(true);
	//$cl->SetMatchMode(SPH_MATCH_ALL);//这个关闭它,不然会提示警告
	$res = $cl->Query ( $q, $index );
	print_r($res['matches']);	//此处为打印结果


Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐