mysql coreseek_coreseek,php,mysql全文检索部署(二)

5. MySQL数据源配置

如果是MySQL,需要设置读取数据输出字符集为UTF-8;请现将数据的字符集转换为UTF-8或者至少可以输出为UTF-8。

mysql> show variables like 'character_set_%';

+--------------------------+--------------------------------------------+

| Variable_name            | Value                                      |

+--------------------------+--------------------------------------------+

| character_set_client     | utf8                                       |

| character_set_connection | utf8                                       |

| character_set_database   | utf8                                       |

| character_set_filesystem | binary                                     |

| character_set_results    | utf8                                       |

| character_set_server     | utf8                                       |

| character_set_system     | utf8                                       |

| character_sets_dir       | /var/www/dream/mysql/share/mysql/charsets/ |

+--------------------------+--------------------------------------------+

root@CC-57:~# vi /usr/local/coreseek/etc/csft.conf

数据源定义:

source  main

{

type                             = mysql

sql_host                        = localhost

sql_user                        = root

sql_pass                        = xxxx

sql_db                            = xxxx

sql_port                         = 3306

sql_query_pre                  = SET NAMES utf8                               #命令行查询时,设置正确的字符集,3.2.14开始支持

sql_query                  = select id, title, connect from tablename     #sql_query第一列id需为整数

sql_query_info            = SELECT * FROM documents WHERE id=$id  #命令行查询时,从数据库读取原始数据信息

}

索引定义:

index main

{

source = main                                                                                                    #对应的source名称

path = /usr/local/coreseek/var/data/main

docinfo = extern

mlock = 0 morphology = none

min_word_len = 1

html_strip = 0

charset_dictpath = /usr/local/mmseg3/etc/                                                          #BSD、Linux环境下设置,/符号结尾

#charset_dictpath = etc/                                                                                      #Windows环境下设置,/符号结尾

charset_type = zh_cn.utf-8

}

重新建立索引:

root@CC-57:~# /usr/local/coreseek/bin/indexer --all

搜索测试:可以支持中文检索

root@CC-57:~# /usr/local/coreseek/bin/search 篮球

words:

1. '篮球': 1250 documents, 1272 hits

6. coreseek实时索引配置

数据库中的数据很大,然后我有些新的数据后来加入到数据库中,也希望能够检索到,全部重新建立索引很消耗资源,这样需要用到主索引+增量索引的思路来解决,这个思路实现的主要原理就是设置俩个数据源和俩个索引。

a.创建一个索引器

一个简单的实现是,在数据库中增加一个计数表,记录将文档集分为俩个部分的文档ID,每次重新构建主索引时,更新这个表

先在mysql中插入一个计数表:

mysql> create table sph_counter(counter_id int unsigned auto_increment primary key,max_doc_id int);

mysql> desc sph_counter;

+------------+------------------+------+-----+---------+----------------+

| Field      | Type             | Null | Key | Default | Extra          |

+------------+------------------+------+-----+---------+----------------+

| counter_id | int(10) unsigned | NO   | PRI | NULL    | auto_increment |

| max_doc_id | int(11)          | YES  |     | NULL    |                |

+------------+------------------+------+-----+---------+----------------+

2 rows in set (0.00 sec)

b. 再次修改配置文件

主数据源,继承主数据源,主索引,继承索引(继承索引也就是增量索引)

主数据源里面,需要把欲查询语句改成下面的语句

root@CC-57:~# vi /usr/local/coreseek/etc/csft.conf

source main {

把sql_query_pre的语句改成下面的

sql_query_pre     = replace into sph_counter select 1,max(id) from tablename

把sql_query 的语句改成下面的

sql_query = select id, title, connect from tablename

where  id <=(select max_doc_id from sph_counter where counter_id=1)

}

继承主数据源

source delta : main {

sql_query_pre = SET NAMES utf8

sql_qurey = select id, title, connect from tablename

where  id >(select max_doc_id from sph_counter where counter_id=1)

}

继承索引

index delta : main

{

source                  = delta

path                    = /usr/local/coreseek/var/data/delta

#       morphology              = stem_en

}

剩下的基本不变

注意:主source 的select 项要与继承source的select 项匹配,否则合并时会出错

source main: select id, title, connect from tablename

source detal: select id, title, connect from tablename

c. 测试主索引+增量索引

如果想测试增量索引是否成功,往数据库表中插入数据,查找是否能够检索到,这个时候应该为空,然后再重新单独建立增量   索引

/usr/local/coreseek/bin/indexer     detal

查看是否将新的记录进行了索引,如果成功

此时,再用/usr/local/coreseek/bin/search 工具来检索,能够看到在主索引中检索到的结果为0,而在增量索引中检索到结果,当然前提条件是检索的词只在后添加的数据中存在

d. 实时更新索引

需要建立来个脚本,还要用到计划任务

main.sh     delta.sh

在增量索引中写下 delta.sh

vi     /usr/local/coreseek/etc/delta.sh

#!/bin/bash

/usr/local/coreseek/bin/indexer delta   --rotate  >> /usr/local/coreseek/var/log/delta.log

在主索引中写下 main.sh

vi     /usr/local/coreseek/etc/main.sh

#!/bin/bash

/usr/local/coreseek/bin/indexer main    --rotate  >> /usr/local/coreseek/var/log/merge.log

chmod a+x   /usr/local/coreseek/etc/delta.sh

chmod a+x   /usr/local/coreseek/etc/main.sh

最后,需要脚本自动运行,实现5分钟建立增量索引 ,每天定时执行一次主索引

crontab -e

*/5 * * * *      /usr/local/coreseek/etc/delta.sh

30 2 * * *      /usr/local/coreseek/etc/main.sh

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值