美文网首页
迅搜xunsearch大数据平滑重建索引慢,创建索引越来越慢

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

作者: 一同学习 | 来源:发表于2022-07-12 02:14 被阅读0次

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

解决办法:

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

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

比如我这里xunsearch目录是

/www/server/xsearch/sdk/php/util
  • 进入后打开XSDataSource.class.php文件,增加全局变量:$previd

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大数据平滑重建索引慢,创建索引越来越慢

    相关文章

    • Oracle 索引学习

      创建索引 标准语法 唯一索引 组合索引 反向键索引 示例 删除索引 修改索引 重建索引 联机重建索引 合并索引

    • 迅搜创建数据库索引

      1、Ubuntu环境下安装:1)LNMP安装:参考https://lnmp.org/install.html#wg...

    • 索引用法和利弊权衡

      索引(Index)是帮助MySQL高效获取数据的数据结构。使用索引前需要创建索引。 创建索引 普通索引 直接基于表...

    • pandas数据结构

      pandas数据结构 Series创建赋值字典创建数组运算 DataFrame创建索引列索引行索引列赋值属性 索引...

    • 12.Magento 2 索引和重建索引

      Magento 2 开发目录 本文讨论如何创建一个索引器(Indexer)重建索引(Reindex)。Magent...

    • Oracle为什么要重建索引?

      当我们创建索引时,oracle会为索引创建索引树,表和索引树通过rowid(伪列)来定位数据.当表里的数据发生更新...

    • 基本功能

      重建索引(改变索引顺序) 重要方法,创建一个符合新索引的新对象。 method可选参数允许使用ffill 方法将值...

    • Mac spotlight无法搜索的解决方法

      今天突然发现spotlight搜东西没反应了,网上查找解决方案都说是要重建索引,于是按下面的方法重建索引: 将Ma...

    • MongoDB:创建索引需要注意的事项

      1. 尽可能在写入数据前把索引创建好 MongoDB 创建索引比较耗时,如果在数据写入完毕以后再去创建索引,创建的...

    • mysql优化建议

      1. 创建 每张表上的索引不应多于6个,索引越多在插入删除时越慢,而且索引会占用很大的磁盘空间。 尽量避免使用te...

    网友评论

        本文标题:迅搜xunsearch大数据平滑重建索引慢,创建索引越来越慢

        本文链接:https://www.haomeiwen.com/subject/sejzbrtx.html