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查询数据库取出详细信息

       

    世上无难事,只怕有心人......
  • 相关阅读:
    ERROR Function not available to this responsibility.Change responsibilities or contact your System Administrator.
    After Upgrade To Release 12.1.3 Users Receive "Function Not Available To This Responsibility" Error While Selecting Sub Menus Under Diagnostics (Doc ID 1200743.1)
    产品设计中先熟练使用铅笔 不要依赖Axure
    12.1.2: How to Modify and Enable The Configurable Home Page Delivered Via 12.1.2 (Doc ID 1061482.1)
    Reverting back to the R12.1.1 and R12.1.3 Homepage Layout
    常见Linux版本
    网口扫盲二:Mac与Phy组成原理的简单分析
    VMware 8安装苹果操作系统Mac OS X 10.7 Lion正式版
    VMware8安装MacOS 10.8
    回顾苹果操作系统Mac OS的发展历史
  • 原文地址:https://www.cnblogs.com/gooderic/p/5816300.html
Copyright © 2011-2022 走看看