欢迎使用CSDN-markdown编辑器

(一)、前期准备

下载sphinx

地址

sphinx的目录结构

sphinx的目录结构

使用Sphinx

1、首先得有数据
2、建立Sphinx配置文件
3、生成索引
4、启动Sphinx
5、使用之(调用api或search.exe程序进行查询)

(二)、具体如下

2),关于sphinx配置文件

    #源定义  需要对数据库里面的哪些数据建立全文索引 diqu,这个diqu可以自定义
source diqu
{
    type                    = mysql

    sql_host                = localhost
    sql_user                = root
    sql_pass                = root
    sql_db                  = sphinxc
    sql_port                = 3306
    sql_query_pre           = SET NAMES utf8
#代表对数据库里的哪张表的哪几个字段建立索引 这里的ID必须叫做id,即使数据库表里面的字段不叫做id,使用别名diqu_id as id
    sql_query               = SELECT id,province_id,province_name,city_id,city_name,county_id,county_name,town_id,town_name,village_id,village_name FROM j_position
#sql_query第一列id需为整数
#province_id,province_name,city_id,city_name,county_id,county_name,town_id,town_name,village_id,village_name作为字符串/文本字段,被全文索引
    #sql_attr_uint          = group_id           #从SQL读取到的值必须为整数
    #sql_attr_timestamp     = date_added #从SQL读取到的值必须为整数,作为时间属性

    sql_query_info_pre      = SET NAMES utf8                                        #命令行查询时,设置正确的字符集
    sql_query_info            = SELECT * FROM j_position WHERE id=$id #命令行查询时,从数据库读取原始数据信息
}

#index定义,索引文件对应的信息,对应的index名称,也可以自定义名称
index diqu
{
    source            = diqu             #对应的source名称
    path            =  D:/coreseek/var/data/diqu
    docinfo            = extern
    mlock            = 0
    morphology        = none
    min_word_len        = 1
    html_strip                = 0

    #中文分词配置,详情请查看:http://www.coreseek.cn/products-install/coreseek_mmseg/
    #charset_dictpath = /usr/local/mmseg3/etc/ #BSD、Linux环境下设置,/符号结尾
    charset_dictpath = D:/coreseek/etc#Windows环境下设置,/符号结尾,最好给出绝对路径,例如:C:/usr/local/coreseek/etc/...
    charset_type        = zh_cn.utf-8
}

#全局index定义 在建立索引的时候的,可以使用的内存
indexer
{
    mem_limit            = 128M
}

#searchd服务定义,端口默认是9312
searchd
{
    listen                  =   9312
    read_timeout        = 5
    max_children        = 30
    max_matches            = 1000
    seamless_rotate        = 0
    preopen_indexes        = 0
    unlink_old            = 1
    pid_file = D:/coreseek/var/log/searchd_mysql.pid  #请修改为实际使用的绝对路径
    log = D:/coreseek/var/log/searchd_mysql.log        #请修改为实际使用的绝对路径
    query_log = D:/coreseek/var/log/query_mysql.log #请修改为实际使用的绝对路径
}

3)、生成索引

开始 -> 运行 -> 输入cmd回车,打开命令行工具

e:\coreseek\bin\indexer –config e:\coreseek\etc\mysql.conf –all

这一串东西其实就是调用indexer程序来生成所有索引

如果只想对某个数据源进行索引,则可以这样:
e:\coreseek\bin\indexer –config e:\coreseek\etc\mysql.conf #索引名称(索引名称指配置文件中所定义的)

4)、启动Sphinx

e:\coreseek\bin\searchd –config e:\coreseek\etc\mysql.conf

5)、使用之(调用api或search.exe程序进行查询)

<?php
//引入sphinx类
require('./sphinxapi.php');
//连接服务器
$sphinx->SetServer('127.0.0.1',9312);
//实例化对象
$sphinx = new SphinxClient();
//设置返回结果集为php数组格式
$sphinx->SetArrayResult ( true );
//匹配结果的偏移量,参数的意义依次为:起始位置,返回结果条数,最大匹配条数
$sphinx->SetLimits(0, 20, 1000);
//最大搜索时间
$sphinx->SetMaxQueryTime(10);
//使用sphinx返回ID
$res = $sphinx->query('海淀');

/*header('Content-Type:text/html;charset=utf8');
echo "<pre>";
var_dump($res);*/

//连接数据库
//根据返回的ID查询
//
$id = array_keys($res['matches']);
$ids = implode(',',$id);
/*print_r($ids);
exit;*/
$sql = "SELECT * FROM j_position WHERE id in($ids)";
$link = mysql_connect('localhost','root','root');
mysql_select_db('sphinxc');
mysql_query('set names utf8',$link);
$result = mysql_query($sql);
while ($row = mysql_fetch_assoc($result)) {
  var_dump($row);
}
mysql_close($link);
>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值