zoukankan      html  css  js  c++  java
  • sphinx使用心得

           近期领导觉得网站的搜索太慢了。让我们优化一下。经过研究。感觉之前使用的like查询效率太低。所以导致查询速度慢。从网上找到了sphinx。据说这个软件是做搜索用的。可以大大提高效率。由于之前从来没有接触过。所以只能对着文档进行研究。由于我们的网站是纯英文的。所以只需要sphinx即可。针对中文做全文索引的软件叫coreseek。最初我认为sphinx就是一个数据库。和mysql类似。只是比mysql效率高。经过研究,发现并不是那么回事。

          sphinx是对数据库里的表做索引。需要查询的数据提交到sphinx进行查询。返回在mysql数据库里的id,让后拿id去mysql数据库里去查询。

    1、先安装sphinxclient
       #cd /usr/local/src
       #wget http://sphinxsearch.com/files/sphinx-0.9.9.tar.gz
       #tar xzvf sphinx-0.9.9.tar.gz
       #cd sphinx-0.9.9/api/libsphinxclient
       #vim sphinxclient.c                    
        找到
        void sock_close ( int sock );
        改为
        static void sock_close ( int sock );
       #./configure --prefix=/usr/local/sphinxclient
       #make
       #make install
     2、安装sphinx扩展
       #wget http://pecl.php.net/get/sphinx-1.0.4.tgz
       #tar xvzf sphinx-1.0.4.tgz
       #cd sphinx-1.0.4
       #/usr/local/php/bin/phpize
       #./configure --with-php-config=/usr/local/php/bin/php-config --with-sphinx=/usr/local/sphinxclient
       #make
       #make install
       修改php.ini
       extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/"
       [sphinx]
       extension=sphinx.so
    

    2、测试
       1、安装sphinx
          请参照文档http://linux008.blog.51cto.com/2837805/622088
       2、编写测试文件

        #vim sphinx.php
        <?php
         $s = new SphinxClient;
         setServer("localhost", 9312);
         $s->setMatchMode(SPH_MATCH_ANY);
         $s->setMaxQueryTime(3);
         $result = $s->query("demo");
         var_dump($result);
        ?>
        #/usr/local/php/bin/php sphinx.php   运行结果
        array(9) {
      ["error"]=>
      string(0) ""
      ["warning"]=>
      string(0) ""
      ["status"]=>
      int(0)
      ["fields"]=>
      array(5) {
        [0]=>
        string(6) "cat_id"
        [1]=>
        string(13) "provider_name"
        [2]=>
        string(12) "goods_number"
        [3]=>
        string(18) "promote_start_date"
        [4]=>
        string(8) "keywords"
      }
      ["attrs"]=>
      array(8) {
        ["goods_sn"]=>
        string(1) "3"
        ["goods_name"]=>
        string(1) "3"
        ["brand_id"]=>
        string(1) "1"
        ["goods_weight"]=>
        string(1) "5"
        ["market_price"]=>
        string(1) "5"
        ["shop_price"]=>
        string(1) "5"
        ["promote_price"]=>
        string(1) "5"
        ["gid"]=>
        string(10) "1073741825"
      }
      ["total"]=>
      int(0)
      ["total_found"]=>
      int(0)
      ["time"]=>
      float(0)
      ["words"]=>
      array(1) {
        ["demo"]=>
        array(2) {
          ["docs"]=>
          int(0)
          ["hits"]=>
          int(0)
        }
      }
    }

  • 相关阅读:
    多线程自动化运维linux的尝试 优化二
    多线程自动化运维linux的尝试 优化一
    多线程自动化运维linux的尝试
    mysql root 没有任何权限
    oracle hint 知多少
    pandas 实战笔记
    ICM issue IcmPlAllocBuf: MpiGetOutbuf failed (rc = 14 (MPI_ESTALE: outdated MPI handle))
    利用python在Oracle数据库中生成密码字典库
    nginx 配置的一些参数
    nginx四层代理
  • 原文地址:https://www.cnblogs.com/beyondhjjyt/p/3332557.html
Copyright © 2011-2022 走看看