Heim >Backend-Entwicklung >PHP-Tutorial >sphinx范围查询不生效

sphinx范围查询不生效

WBOY
WBOYOriginal
2016-06-06 20:18:091085Durchsuche

使用的coreseek3.2版本,现在有一个mysql的源,包括id,addtime,uid,title等字段。其中addtime为unix时间戳,现在想根据addtime做范围查询。代码如下:

<code>$s = new SphinxClient;
$s->setServer("localhost", 9312);
$s->setArrayResult(true);
$s->setMatchMode(SPH_MATCH_EXTENDED2);
$s->SetFilterRange('addtime',0,99999999999);
$result = $s->query('word', 'request_log_order');
print_r($result);</code>

但是并没有什么卵用,$resultfalse,当去掉addtime的过滤之后可以正常筛选到结果,addtime的值确实位于0-9999999999之间。

问题二:如何不设置关键词,即我只需要限定addtime的范围就行了,不需要设置搜索关键词。query方法必须传一个关键词?

应用场景是这样的,需要筛选出指定日期内的订单数超过N笔的数据,由于sql语句复杂,执行速度慢,所以考虑用coreseek实现。

回复内容:

使用的coreseek3.2版本,现在有一个mysql的源,包括id,addtime,uid,title等字段。其中addtime为unix时间戳,现在想根据addtime做范围查询。代码如下:

<code>$s = new SphinxClient;
$s->setServer("localhost", 9312);
$s->setArrayResult(true);
$s->setMatchMode(SPH_MATCH_EXTENDED2);
$s->SetFilterRange('addtime',0,99999999999);
$result = $s->query('word', 'request_log_order');
print_r($result);</code>

但是并没有什么卵用,$resultfalse,当去掉addtime的过滤之后可以正常筛选到结果,addtime的值确实位于0-9999999999之间。

问题二:如何不设置关键词,即我只需要限定addtime的范围就行了,不需要设置搜索关键词。query方法必须传一个关键词?

应用场景是这样的,需要筛选出指定日期内的订单数超过N笔的数据,由于sql语句复杂,执行速度慢,所以考虑用coreseek实现。

是64位的吗?这么多9超过32位范围了。

1、指定日期内的订单数超过N笔的数据
数据库就能处理了,加个索引,应该就ok了吧

2、query方法必须传一个关键词

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Linux 下 PHP 无法 echo 图片Nächster Artikel:php如何实现添加分类?