关于使用coreseek并为其做分页的介绍(转)

coreseek 做分页时找数据总量还真不好找。以为他会给一个方法(函数)什么的去获取,结果却不是。
首先需要了解:
num_matches:
 当前返回的结果数,<= limit设置值。
max_matches: 最多返回的结果数,默认为1000,用户最多只能看到1000条搜索结果。这个是在nf中设置的。
total_found: 结果总数。索引中所有满足查询条件的文档总数。这个是在你查询的返回结果中的数组中有的。当然前提是你必须在query前设置:$this->sc->SetArrayResult(true);
total: 最多返回结果数,取值取决于max_matches值和total_found值。如果total_found数超过max_matches,则total = max_matches,否则,total = total_found。这个也是在你查询的返回结果中的数组中有的。当然前提也是你必须在query前设置:$this->sc->SetArrayResult(true);
这样,了解了这几个属性之后就可以做分页了。

我们应该使用返回值中的total来做分页总数据。虽然这个不代表真实的返回值(当返回值大于max_matches,也就是1000,如真实返回2500,但是你却只能得到1000)。
代码是:

  复制代码 代码如下:

  $this->sc->SetServer("127.0.0.1",9312);
  $this->sc->SetArrayResult(true);
  $this->sc->SetLimits($start,$page);
//如果需要搜索指定全文字段的内容,可以使用扩展匹配模式:
  $this->sc->SetMatchMode(SPH_MATCH_ANY); 
$res = $this->sc->Query($where,"main");
$count = $res[‘total‘];

这个¥count就是我们要的分页的总数据了。
其他的后续怎么分页是以样式和数据结构做的,不能雷同,并且分页也是基础的东西,所以这里就不再多说分页的详细问题了。我这里单单讨论这个总数据的取值情况。因为很多人都取count($res[‘matches‘])的值,但是这个是分页后的返回结果,你只能得到10,或者20或者其他的值。呵呵,那就搞笑了。

时间: 2024-10-02 08:18:54

关于使用coreseek并为其做分页的介绍(转)的相关文章

用PHP+MySQL来做分页的演示

用php做分页弄懂逻辑关系其实不难,不过我在听课的时候估计是被老师讲的那些变量里的英文单词给听懵了,因为有几个变量的名字都很像,只是换了两三个英文字母而已,有的就少几个这样的,听到一半已经不知道老师讲的这个变量代表的是什么了,写这个也只是为了复习一下,温故而知新嘛. 英文翻译:page:页   per:由,依靠 //引用数据库 下面附赠一个连接数据库的包装函数使用sql语句时用my_query()这个函数:include ./MySQLDB.php: //先设置当前选中的页码数 $pageNum

分库后如何高效的做分页

现在连接6台mysql数据库,路由分库算法是根据id的hash值%6,根据值不同分别存入6台数据库.现在不知道如何做分页查询列表? 先决原则: 数据分库时尽量选择索引字段,最好此字段还是唯一的. 数据分库时建表时结合业务,选择where后查询比较频繁的字段. 解决方案泛泛之谈: 1.直接使用跨库的多表联合查询. 不建议. 2.向6台数据库server均发送一个查询请求,然后对所有查询结果进行汇总,再处理分页逻辑. 时间换空间.取20条有序数据,6台服务器各取20条,汇总排序返回. 3.建立一个总

主流数据库分页查询介绍

1 背景概述 由于在项目中需要在页面上显示数量非常多的数据, 在进行数据库查询时首先会把所有的数据都查询出来,然后在进行显示,这时候分页查询的操作就必不可少了,本文介绍Mysql.Oracle.sql Server 三种数据库进行分页查询的用法. 2 预期读者 数通畅联内部员工 广大计算机爱好者 3 名词解释 分页查询 就是将将过多的结果在有限的界面上分多页来显示,一般将分页查询分为两类:逻辑分页.物理分页.    逻辑分页是在用户第一次访问时,将数据库的所有记录全部查询出来,添加到一个大集合中

Lind.DDD.Paging分页模块介绍

回到目录 分页组件网上有很多,MVC.Pager,JSPager等,通过实现方式大体分为前端分页和后端分页,前端分页是前台对list内存本地集合进行分页,缺点就是在大数据情况下,内存占用过高:后端分页就是UI把要返回的页号告诉后台,由后台组织数据并返回,这种方法就是我们经常看到的了:而根据后台集合种类又可以分类List和IQueryable,前者是本地集合,在返回数据时,直接把第几页共几条的集合返回:IQueryable是预查询集合,它是Linq的产物,在很多地里它不通用,除非你的ORM框架支持

用angularJS做分页按钮的技巧

了解angular的童鞋肯定知道angular可以双向绑定数据,也可以单向绑定:这种绑定的理念让我们少敲不少dom操作的代码,但这种绑定仅仅使用在看得见的数据上么? ,no .在使用angular的过程中,我发现: 利用ng-model不但可以绑定数据,还能当变量用.在单向绑定中,我们可以巧妙地利用这一点,把我们需要的scope里面的 自定义的model当成变量使用:比如在实现当用户点第几页就取第几页的功能呢,我们可以定义一个模型$scope.currentpage=“”,把它当成一个变量,初始

用bootstrap做分页

分页 应用于页面数据特别多的情况 作用: 加快数据查询速度 方便用户操作 利于页面的布局 思路: 确定表中总的数据行数 计算页面数量:页数 = 总行数 / 每页行数 编写分页查询的方法 select * from 表名 limit 开始行数,长度 包装数据到Java对象中,发送给JSP 包装分页数据的实体类: public class Page<T> { //每页的行数 public static final int PAGE_SIZE = 10; //保存分页的数据 private List

mybatis如何做分页处理

1.首先根据自己实际需求编写实体类 1 import java.io.Serializable; 2 3 public class User implements Serializable{ //最好将该实体类序列化 4 5 private static final long serialVersionUID = 1L; 6 7 private Integer id; 8 private String name; 9 private String birthday; 10 private Str

springmvc+mybatis 做分页sql 语句

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="ssmy.dao.UserDao"> <r

ajax做分页

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-