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)
        }
      }
    }

  • 相关阅读:
    算法学习记录单链表
    算法学习记录排序
    算法学习记录图——最小生成树之prim算法
    算法学习记录图——应用之拓扑排序(Topological Sort)
    算法学习记录图(DFS BFS)
    算法学习记录排序——冒泡排序(Bubble Sort)
    算法学习记录图——最小路径之Floyd算法
    自用SqlHelper.cs
    WPF的DataGrid的标题加粗样式
    .NET Framework 4.0不能用sqlite的问题解决方法
  • 原文地址:https://www.cnblogs.com/beyondhjjyt/p/3332557.html
Copyright © 2011-2022 走看看