zoukankan      html  css  js  c++  java
  • Sphinx全文索引

      类似的软件: Lucence

     使用流程:

      1 下载  coreseek  coreseek-3.2.14-win32

      2 使用sphinx为要搜索的数据【数据源-商品】 创建全文索引

          2.1 制作一个配置文件  找到在 coreseek-3.2.14-win32coreseek-3.2.14-win32etccsft_mysql.conf

             复制一个模板 改名 为sphinx.conf

         2.2修改配置文件

    #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 p39_goods_attr b ON a.id=b.goods_id GROUP BY a.id
    }

    #一个数据源对应一个index
    #定义索引文件
    index goods
    {
    source = goods #对应的source名称
    #生成的索引文件存放的目录索引文件的名字, 最后的goods是指文件名叫goods 而不是目录
    path = D:serverapachehtdocs p p40coreseek-3.2.14-win32vardatagoods
    docinfo = extern
    mlock = 0
    morphology = none
    min_word_len = 1
    html_strip = 0

    #中文分词词库文件所在目录
    charset_dictpath = D:serverapachehtdocs p p40coreseek-3.2.14-win32etc
    charset_type = zh_cn.utf-8
    }

    #全局index定义
    indexer
    {
    mem_limit = 128M
    }

    #searchd服务器的配置
    searchd
    {
    listen = 9312
    read_timeout = 5
    max_children = 30
    max_matches = 1000
    seamless_rotate = 0
    preopen_indexes = 0
    unlink_old = 1
    #配置一下 以下三个文件存放的绝对目录【目录中不要有中文】
    pid_file = D:serverapachehtdocs p p40coreseek-3.2.14-win32var/log/searchd_mysql.pid
    log = D:serverapachehtdocs p p40coreseek-3.2.14-win32var/log/searchd_mysql.log
    query_log = D:serverapachehtdocs p p40coreseek-3.2.14-win32var/log/query_mysql.log
    }

     2.3使用sphinx为商品生成索引  

     使用bin/indexer.exe的命令

       以管理员命令 运行CMD

     D:serverapachehtdocs p p40coreseek-3.2.14-win32inindexer.exe -c  D:serverapachehtdocs p p40coreseek-3.2.14-win32etcsphinx.conf  配置的路径  goods 配置文件中所有名字

      -----------------------------

       安装启动sphinx服务器

               使用bin/searchd.exe

     D:serverapachehtdocs p p40coreseek-3.2.14-win32insearchd.exe -c  D:serverapachehtdocs p p40coreseek-3.2.14-win32etcsphinx.conf   --install 

       安装服务窗口找到SPHINX并启动

        services.msc   启动

      在项目中使用PHP代码查询sphinx

           A 先复制sphinxapi文件到项目中根目录

     

      例子:

    //关键字搜索
    public function key_search()
    {

    //搜索关键字
    $key=I('get.key');

    header('Content-Type:Text/html;charset=utf-8;');
    //搜索sphinx
    require('./sphinxapi.php');
    $sph=new SphinxClient();
    $sph->SetServer('localhost',9312);
    //第一个参数:要查的关键字
    //第二个参数:sphinx中索引的名字默认是*,所有的索引
    $ret=$sph->query($key,'goods');
    //提取出商品的ID
    $ids=array_keys($ret['matches']);
    $gModel=D('Goods');
    $ret=$gModel->field('id,goods_name')->where(
    'id'=>array('in',$ids),
    )->select();


    }

    用法

     1 创建配置文件建索引并启动服务器

     2 把关键词发到sphinx服务器去搜索 会把搜索到的商品ID返回给php

    3 php 再使用ID查询数据库取出详细信息

       

    世上无难事,只怕有心人......
  • 相关阅读:
    几个函数小练习
    结构体和枚举类型
    结构体
    几个函数小练习
    函数简介
    网页端滚轮滑动事件
    碰撞检测
    Ajax前后台交互函数
    事件绑定与解除js
    移动端的屏幕适配问题
  • 原文地址:https://www.cnblogs.com/gooderic/p/5816300.html
Copyright © 2011-2022 走看看