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

coreseek 做分页时找数据总量还真不好找。以为他会给一个方法(函数)什么的去获取,结果却不是。
首先需要了解:
num_matches:
当前返回的结果数,<= limit设置值。
max_matches: 最多返回的结果数,默认为1000,用户最多只能看到1000条搜索结果。这个是在csft_mysql.conf中设置的。
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或者其他的值。呵呵,那就搞笑了。

(0)

相关推荐

  • 关于使用coreseek并为其做分页的介绍

    coreseek 做分页时找数据总量还真不好找.以为他会给一个方法(函数)什么的去获取,结果却不是.首先需要了解:num_matches: 当前返回的结果数,<= limit设置值.max_matches: 最多返回的结果数,默认为1000,用户最多只能看到1000条搜索结果.这个是在csft_mysql.conf中设置的.total_found: 结果总数.索引中所有满足查询条件的文档总数.这个是在你查询的返回结果中的数组中有的.当然前提是你必须在query前设置:$this->sc->

  • springmvc+mybatis 做分页sql 语句实例代码

    废话不多说了,直接给大家贴代码了,具体代码如下所示: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="s

  • SQL Server 分页查询通用存储过程(只做分页查询用)

    自开始做项目以来,一直在用.这段存储过程的的原创者(SORRY,忘记名字了),写得这段SQL代码很不错,我在这个基础上,按照我的习惯以及思维方式,调整了代码,只做分页查询用. /*---------------------------------------------- *procedure name : P_PageResult * author :Fay * create date : 2014-07-18 */ CREATE PROCEDURE prcPageResult -- 获得某一

  • sql2008 hql语句翻译过来的分页语句介绍

    sql2008 hql语句翻译过来的分页语句 WITH query AS (select syusers0.id as id5, syusers0.createdatetime as createda25_, syusers0.modifydatetime as modifyda35_, syusers0.name as name5, syusers0.password as password5, ROW_NUMBER() OVER ( order by syusers0.name desc)

  • json实现jsp分页实例介绍(附效果图)

    json 在上篇文章已有详细介绍,json的既简单易懂,又传输迅速.并且能和javascript很好的融为一体. 在不需要添加jar的前提下,能够很好完成jsp分页问题. 下面具体介绍分页实例: 效果如图所示,采用jsp+servlet技术 首先:编写一个javaBean User.java 复制代码 代码如下: package bean; public class User { private int id; private String name; private String passwo

  • SQL Server实现分页方法介绍

    一.创建测试表 CREATE TABLE [dbo].[Student]( [id] [int] NOT NULL, [name] [nvarchar](50) NULL, [age] [int] NULL) 二.创建测试数据 declare @i int set @i=1 while(@i<10000) begin insert into Student select @i,left(newid(),7),@i+12 set @i += 1 end 三.测试 1.使用top关键字 top关键字

  • Python中实现对list做减法操作介绍

    问题描述:假设我有这样两个list, 一个是list1,list1 = [1, 2, 3, 4, 5]           一个是list2,list2 = [1, 4, 5]           我们如何得到一个新的list,list3,           list3中包括所有不在list2中出现的list1中的元素.           即:list3 = list1 – list2           解决方案:我们可以用set(集合)操作           list3 = list(

  • asp.net 分页潜谈

    要做出分页效果不外乎有这几个方向入手,从数据源.从服务器或者从客户端.不管你是怎么做都跳不出这三个地方(其实B/S结构的开发了就是在这三个地方做文章,只不过有些微变化而已). 先说说从数据源入手的吧.一想到数据源做分页,自然是T-SQL了.什么存储过程,视图.特殊函数(当然,这里指的只是我熟悉的MS).能用到的SQL知识都往上砸.具体的实现就不说了,忒Easy.代码部分基本没有什么,只要每次更改T-SQL语句就行了.不好的就是太受数据库的限制,程序中一丁点的变化,所有有关SQL的地方都要变,有些

  • SQL分页语句的三种方案

    方法一: 复制代码 代码如下: SELECT TOP 页大小 * FROM table1 WHERE id NOT IN          (           SELECT TOP 页大小*(页数-1) id FROM table1 ORDER BY id           ) ORDER BY id 方法二: 复制代码 代码如下: SELECT TOP 页大小 * FROM table1 WHERE id >           (           SELECT ISNULL(MAX

  • Mysql limit 优化,百万至千万级快速分页 复合索引的引用并应用于轻量级框架

    MySql 这个数据库绝对是适合dba级的高手去玩的,一般做一点1万篇新闻的小型系统怎么写都可以,用xx框架可以实现快速开发.可是数据量到了10万,百万至千万,他的性能还能那么高吗?一点小小的失误,可能造成整个系统的改写,甚至更本系统无法正常运行!好了,不那么多废话了.用事实说话,看例子: 数据表 collect ( id, title ,info ,vtype) 就这4个字段,其中 title 用定长,info 用text, id 是逐渐,vtype是tinyint,vtype是索引.这是一个

随机推荐