关于使用coreseek并为其做分页的介绍
关于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_found。这也是在查询返回的结果数组中的一部分。
了解了这些属性后,我们就可以进行分页了。虽然max_matches限制了返回的结果数,但我们仍然可以通过total来获取分页的总数据。当返回值大于max_matches时,例如真实返回了2500条结果,我们只能得到其中的1000条。我们需要利用返回值中的total来进行分页。
具体的代码实现如下:
首先设置服务器和结果集:
```php
$this->sc->SetServer("127.0.0.1", 9312);
$this->sc->SetArrayResult(true);
```
然后设置分页限制和匹配模式:
```php
$this->sc->SetLimits($start, $page); // 进行分页设置
$this->sc->SetMatchMode(SPH_MATCH_ANY); // 如果需要搜索指定全文字段的内容,可以使用扩展匹配模式
```
接着执行查询并获取结果:
```php
$res = $this->sc->Query($where, "main");
$count = $res['total']; // 这个count就是我们要的分页的总数据了。
```
需要注意的是,很多人错误地使用了count($res['matches'])的值作为分页数据,这是不正确的。这个值实际上是分页后的返回结果数量,可能只有几十条或者几条。我们应该使用前面提到的total作为分页的总数据。关于后续的分页逻辑和样式处理则需要根据具体情况进行定制设计。希望通过这篇能给大家带来对Coreseek分页策略更深入的了解。
编程语言
- 关于使用coreseek并为其做分页的介绍
- js中this的用法实例分析
- php数据序列化测试实例详解
- 详谈js的变量提升以及使用方法
- Laravel5.1 框架模型多态关联用法实例分析
- YII框架行为behaviors用法示例
- 详谈js中window.location.search的用法和作用
- js操作数据库实现注册和登陆的简单实例
- JS+HTML5实现的前端购物车功能插件实例【附demo源
- js 正则表达式学习笔记之匹配字符串
- sqlserver exists,not exists的用法
- 浅析SQLServer中的Scanf与Printf
- JS简单生成由字母数字组合随机字符串示例
- Netbeans 8.2将支持PHP7 更精彩
- JavaScript数据类型的存储方法详解
- JS简单测试循环运行时间的方法