栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > PHP

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

PHP 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/229998.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号