sphinx主索引,增量索引创建

来源:互联网 发布:加油卡充值软件 编辑:程序博客网 时间:2024/06/03 17:10

相关命令及步骤

创建主索引:    /usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft.conf --all创建增量索引:    1. 创建测试数据表以及数据    2. 修改配置文件        主索引源:sql_query_pre        增量索引源:sql_query_pre  sql_query  sql_query_post        主索引:source path        增量索引:source path   3. 创建/更新主索引   4. 创建/更新增量索引    /usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft.conf delta   5.重启索引进程    /usr/local/coreseek/bin/searchd  --stop    /usr/local/coreseek/bin/searchd -c /usr/local/coreseek/etc/csft.conf索引合并    /usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft.conf --merge main delta --rotate
csft.conf    配置文件    source src1    {        type  = mysql        sql_host = 127.0.0.1        sql_user = root        sql_pass =        sql_db  = test        sql_port  = 3306  # optional, default is 3306        sql_query_pre  = SET NAMES utf8        sql_query_pre  = REPLACE INTO sph_counter     SELECT 1, MAX(id) FROM documents        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        sql_query_info  = SELECT * FROM documents WHERE id=$id    } index test1    {        source          = src1        path            = /usr/local/coreseek/var/data/test1        docinfo      = extern        mlock           = 0         morphology      = none         stopwords       = /usr/local/coreseek/var/data/test1/stopwords.txt         wordforms     = /usr/local/coreseek/var/data/test1/wordforms.txt         min_word_len    = 1         charset_type    = sbcs         html_strip      = 0} source delta : src1    {     sql_query_pre = SET NAMES utf8     sql_query = SELECT \id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title, content \ FROM documents \ WHERE \ id>( SELECT max_doc_id FROM sph_counter WHERE counter_id=1 )     sql_query_post = UPDATE sph_counter SET max_doc_id=(SELECT MAX(id) FROM documents) where counter_id=1}index delta : test1    {     source = delta     path = /usr/local/coreseek/var/data/test1  }

创建mysql测试数据表及数据

CREATE TABLE `documents` (`id` int(11) NOT NULL auto_increment,`group_id` int(11) NOT NULL,`group_id2` int(11) NOT NULL,`date_added` datetime NOT NULL,`title` varchar(255) NOT NULL,`content` text NOT NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=5;INSERT INTO `documents` VALUES ('1', '1', '5', '2008-09-13 21:37:47', 'test one', 'this is my test document number one.also checking search within phrases.');INSERT INTO `documents` VALUES ('2', '1', '6', '2008-09-13 21:37:47', 'test two', 'this is my test document number two');INSERT INTO `documents` VALUES ('3', '2', '7', '2008-09-13 21:37:47', 'another doc', 'this is another group');INSERT INTO `documents` VALUES ('4', '2', '8', '2008-09-13 21:37:47', 'doc number four', 'this is to test groups');    // 实现增量索引时使用的计数表CREATE TABLE sph_counter( counter_id INTEGER PRIMARY KEY NOT NULL,max_doc_id INTEGER NOT NULL);

PHP使用

    <?php    header("Content-type: text/html; charset=utf-8");    require_once('sphinxapi.php');    $s = new SphinxClient();    $s->setServer("127.0.0.1", 9312);    $s->setArrayResult(true);    $s->setMatchMode(SPH_MATCH_ALL);    $keyword = 'test';    $result = $s->Query($keyword, '*');    if ($result['total'] == 0) {        echo '无搜索结果';die;    }    // 获取结果id集    $ids = array();    foreach($result['matches'] as $key => $val)    {        $ids[] = $val['id'];    }    print_r($ids);    // 连接数据库    $dsn = "mysql:host=localhost;dbname=test;charset=utf8";    $db = new PDO($dsn, 'root', '');    $sql = 'select * from documents where id in('.implode(',', $ids).')';    $result = $db->query($sql);    $result->setFetchMode(PDO::FETCH_ASSOC);    $data = $result->fetchAll();    // 搜索结果高亮显示    $rule = array(                "before_match" => "<font style='font-weight:bold;color:#f00'>",                "after_match" => "</font>"                );    foreach ($data as $key=>$val) {        $data[$key] = $s->BuildExcerpts($val, 'delta', $keyword, $rule);    }    print_r($data);

添加新分词

1. 复制unigram.txt文件为unigram_new.txt2. 在unigram_new.txt中添加新词3. 生成新的词典文件:/usr/local/mmseg3/bin/mmseg -u /usr/local/mmseg3/etc/unigram_new.txt4. 替换原有的uni.lib文件5. 重建索引 && 重启索引
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 才出生的兔宝宝被母兔抓伤了怎么办 老婆生气了说恨我一辈子我该怎么办 华为手机微信表情不显示含义怎么办 地下城游戏登录链接一直失败怎么办 聊天时别人打听家人不想回答怎么办 微信钱包零钱密码忘了怎么办 斗图我能怎么办我也很无奈 微信解冻设备不一致申诉失败怎么办 看不懂微信脸部表情什么意思怎么办 有的动图图片过大微信发不了怎么办 微信漂流瓶扔瓶子没有人回复怎么办 删了微信 手贱 添加 怎么办 姨妈弄到床垫上拆不下来洗怎么办 碰到情商智商都高的小人怎么办 微信聊天界面右上角的小人头怎么办 最近摸高摸到的高度越来越矮怎么办 每次孕检显示小孩子体型大怎么办? 阴阳师纸片人蓝色锦囊点掉了怎么办 抱孩子把腰闪了动不了在家怎么办 餐厅客人中有儿童服务时怎么办 脊柱胸段向右侧凸要怎么办 玩球球大作战不小心开自由了怎么办 小孩哭脸后喝水呛着了怎么办 摔跤引起的脸部半边儿僵硬怎么办 老人受了刺激大笑不止是怎么办 想让父母陪着玩 没时间怎么办 开过光的百家锁东西别人碰了怎么办 兔兔助手描述文件变了存档怎么办 扣扣没有绑手机被盗了怎么办 我的扣扣被盗了好友也被删了怎么办 小孩不胖但脖子黑怎么办呢 小孩喜欢歪头斜眼看东西怎么办 苹果x屏幕截图发送后成文字怎么办 小朋友照相照出老太脸是怎么办 照相把脸照的很长怎么办 小猫咪下半身不能动不吃不喝怎么办 画个火柴人2主页面进不了怎么办? 火柴人联盟2的衣厨怎么办 偶尔犯了一次错误很自责怎么办 房间已经装修好但想加线条怎么办 自己的房间特别乱却不想收拾怎么办