Sphinx搜索基于日期时间


Sphinx search based on datetime

我有一个名为'createdOn'的字段,其类型为'timestamp'。其中存储的值如下所示:2011-08-07 00:00:00

我想按这个属性搜索。例如,在mysql中,我将这样做:

SELECT * FROM `posts` where deleted = 1 and date(createdOn) = '2011-8-4'

我尝试在sphinx中设置如下:

sql_query               = '
        SELECT id, deleted, upvotes, DATE(createdOn) as createdOn, thread_title, first_post '
        FROM posts
sql_attr_bool       = deleted
sql_attr_timestamp  = createdOn

和php中的

  $cl->SetFilter ( "deleted",array(1));
  $cl->SetFilter ( "createdOn", '2011-8-4');
  $result = $cl->Query("");

但是这给了我一个断言失败的错误。

感谢你

属性时间戳应该是整数值。

在sphinx.conf:

sql_query = select UNIX_TIMESTAMP(createdOn) as createdOn from ...
sql_attr_timestamp = createdOn

和php中的

$cl->SetFilter ( "createdOn", strtotime('2011-8-4'));
$result = $cl->Query("");

对于较新版本的Sphinx,您需要使用SetFilterRange,即:

$createdOn = strtotime('2011-8-4');
$cl->SetFilterRange("createdOn", $createdOn, $createdOn + 86400);