zoukankan      html  css  js  c++  java
  • sphinx实时更新

    1 创建一个表【保存已经创建好的商品的最大ID】-》能够根据这个ID找出哪些商品还没创建索引

    每次创建好索引之后把最大的ID存进去,定期取出新的商品创建索引,创建完新的索引之后再把最大的ID更新到这个表

    /************sphinx表***********/
    drop table if exists p40_sphinx_id;
    create table p40__sphinx_id
    (
    id mediumint unsigned not null default '0' comment '已经建好索引的最后一件商品的ID'
    )engine=InnoDB default charset=utf8 comment 'sphinx';

    insert into p40_sphinx_id values(0);

     2 修改sphinx的配置文件

     2.1 创建好索引之后把已经建好的最后的商品ID更新到这个表

    #MySQL数据源配置,详情请查看:http://www.coreseek.cn/products-install/mysql/
    #请先将var/test/documents.sql导入数据库,并配置好以下的MySQL用户密码数据库
    #为数据库中的表p40_goods表 为数据源
    #源定义
    source goods
    {
    type = mysql

    sql_host = localhost
    sql_user = root
    sql_pass =
    sql_db = php40
    sql_port = 3306
    sql_query_pre = SET NAMES utf8
    #主查询:要为哪些数据建索引就使用一条SQL语句把这些数据取出来即可
    #要求:第一个字段一定是ID
    #现在这个SQL的意思是让SPHINX为所有商品的:goods_name,goods_decs,attr_value这三个字段创建全文索引

    sql_query = SELECT a.id,a.goods_name,a.goods_desc,GROUP_CONCAT(b.attr_value) attr_value from p40_goods a LEFT JOIN p40_goods_attr b ON a.id=b.goods_id GROUP BY a.id
    #在创建好索引之后把最后一个商品ID更新到这个表
    sql_query_post =UODATE P40_sphinx_id set id=(select max(id) from p30_goods where is_on_sale='是')
    }

    建好之后就把ID更新到表中了

    3 修改配置文件后添加的还没有创建索引的数据生成一个增量索引


    #后添加的还没有索引的数据 的数据源
    source goods_new
    {
    type = mysql

    sql_host = localhost
    sql_user = root
    sql_pass =
    sql_db = php40
    sql_port = 3306
    sql_query_pre = SET NAMES utf8
    #主查询:要为哪些数据建索引就使用一条SQL语句把这些数据取出来即可
    #要求:第一个字段一定是ID
    #取出后添加的还没有索引的数据
    sql_query = SELECT a.id,a.goods_name,a.goods_desc,GROUP_CONCAT(b.attr_value) attr_value from p40_goods a LEFT JOIN p40_goods_attr b ON a.id=b.goods_id where a.is_on_sale='是' AND a.id > (select id from p40_sphinx_id)GROUP BY a.id
    #在创建好索引之后把最后一个商品ID更新到这个表
    sql_query_post =UODATE P40_sphinx_id set id=(select max(id) from p30_goods where is_on_sale='是')
    }
    index goods_new
    {
    source = goods_new #对应的source名称
    #生成的索引文件存放的目录
    path = D:serverapachehtdocs p p40coreseek-3.2.14-win32vardatagoods_new
    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 = etc/ #Windows环境下设置,/符号结尾,最好给出绝对路径,例如:C:/usr/local/coreseek/etc/...
    charset_type = zh_cn.utf-8
    }

    #一个数据源对应一个index
    #定义索引文件
    index goods
    {
    source = goods #对应的source名称
    #生成的索引文件存放的目录
    path = D:serverapachehtdocs p p40coreseek-3.2.14-win32vardatagoods
    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 = etc/ #Windows环境下设置,/符号结尾,最好给出绝对路径,例如:C:/usr/local/coreseek/etc/...
    charset_type = zh_cn.utf-8
    }

    4  写一个脚本,

      a 先为增量数据生成索引文件

     b  把 新生成的增量 的索引文件合并到主索引文件

     说明:windows:bat脚本  *.bat

              Linux: shell脚本  只有有可执行的权限就可以执行【chmod+x 文件名】

    在 根目录创建文件 以.bat结尾

    C:UserswylDocumentsczsphinxcoreseek-3.2.14-win32inindexer.exe -c C:UserswylDocumentsczsphinxcoreseek-3.2.14-win32sphinx.conf goods_del --rotate
    C:UserswylDocumentsczsphinxcoreseek-3.2.14-win32inindexer.exe -c C:UserswylDocumentsczsphinxcoreseek-3.2.14-win32sphinx.conf --merge goods goods_del --merge-dst-range is_updated 0 0 --rotate


    C:UserswylDocumentsczsphinxcoreseek-3.2.14-win32inindexer.exe -c C:UserswylDocumentsczsphinxcoreseek-3.2.14-win32sphinx.conf goods_new --rotate
    C:UserswylDocumentsczsphinxcoreseek-3.2.14-win32inindexer.exe -c C:UserswylDocumentsczsphinxcoreseek-3.2.14-win32sphinx.conf --merge goods goods_new --rotate

    配置脚本每隔5分钟自动执行一次

     说明:windows:管理工具->任务计划

           控制面板-》管理工具-》任务计划程序-》点击右侧 -创建基本任务-》填写基本任务名称(自动更新sphinx)-》描述(每隔5分钟自动更新)-》下一步(每天)-》启动程序-》填写任务文件地址-》完成

             linux:crond 进程

    世上无难事,只怕有心人......
  • 相关阅读:
    浏览器兼容模式下,上传文件问题
    计算机编程语言也是一种语言,认识的词汇越多越好
    localhost换成127.0.0.1和本机IP打不开本地项目了的问题
    mvc @html.action() 跨area调用controller 中的action
    windows server 2012 FTP连接报530 User 用户名 cannot log in home directory inaccessible的解决方法
    eCharts 数据转换json
    win10家庭版查看已连接wifi密码
    jequery动态创建form
    jsp 获取配置信息
    docker常用命令
  • 原文地址:https://www.cnblogs.com/gooderic/p/5816371.html
Copyright © 2011-2022 走看看