迅搜xunsearch大数据平滑重建索引慢,创建索引越来越慢

2022-07-12  本文已影响0人  一同学习

在迅搜的使用过程中,创建索引会越来越慢或是在平滑重建索引的时候会出现慢的情况,这是由于创建索引时引用limit分段加载数据了,这其实也没有什么问题,但语句中 limit 10000,20将扫描到的10020行,扔掉了前面的1万行,仅返回了20行,导致大数据下迅搜xunsearch创建索引的速度很慢。

解决办法:

当遇到大数据时,暂停迅搜创建索引,先缓存起来,然后慢慢的加入到xunsearch数据中,好了看下边的办法。

一、进入到迅搜的安装路径

比如我这里xunsearch目录是

/www/server/xsearch/sdk/php/util
protected $inCli;
private $dataList, $dataPos;//在这条语句后边加
protected $previd = 0;
  • 然后再修改getData方法,把ID赋值给刚刚增加的$previd

  • final public function getData()
        {
            if ($this->dataPos === null || $this->dataPos === count($this->dataList)) {
                $this->dataPos = 0;
                $this->dataList = $this->getDataList();
                if (!is_array($this->dataList) || count($this->dataList) === 0) {
                    $this->deinit();
                    $this->dataList = $this->dataPos = null;
                    return false;
                }
            }
            $data = $this->dataList[$this->dataPos];
            $this->dataPos++;
            $this->previd = $data["id"];//这个位置,增加这一条就可以
            return $data;
        }

    一、进入到迅搜的安装路径

  • 修改getDataList,改成如下代码

  • if ($this->limit <= 0) {
                return false;
            }
    //从这里开始增加代码
      $wheresql=" where id > ".$this->previd." order by id asc";
            if(stripos($this->sql, "where") >0){
                $wheresql=" and id > ".$this->previd." order by id asc";
            }
    //增加的代码结束
            $sql = $this->sql .$wheresql. ' LIMIT ' . min(self::PLIMIT, $this->limit) . ' OFFSET ' . $this->offset;
            //构造出来的sql语句:select id,title,content from article where id>100000 order by id asc limit 1000 offset 0,
            $this->limit -= self::PLIMIT;
            //$this->offset += self::PLIMIT;//将这条语句用双斜杠注释掉,offset便不会自增长
            return $this->db->query($sql);

    好了,到这里就全部操作完成了,可以去创建索引试试有没有效果。

    奉承开源精神,本文可随意转载,请注明出处:
    一同学习 » 迅搜xunsearch大数据平滑重建索引慢,创建索引越来越慢

    上一篇 下一篇

    猜你喜欢

    热点阅读