sphinx笔记

来源:互联网 发布:均值方差模型算法 编辑:程序博客网 时间:2024/06/05 04:10

(一)、前期准备

1、下载sphinx

地址

2、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服务定义,端口默认是9312searchd{    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程序来生成所有索引

如果只想对某个数据源进行索引,则可以这样:
d:\coreseek\bin\indexer –config d:\coreseek\etc\mysql.conf #索引名称(索引名称指配置文件中所定义的)
注意:config和all都前面为两横杆

4)、启动Sphinx

d:\coreseek\bin\searchd –config d:\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
原创粉丝点击