Sphinx 斯芬克斯:按关联范围排序

Sphinx 斯芬克斯:按关联范围排序,sphinx,thinking-sphinx,Sphinx,Thinking Sphinx,假设我有一个1:多的关系: 树:苹果 Tree/Apple每个都有一个主键ID列,Apple有一些日期属性/列(创建于) 使用sphinx,我想检索所有树,按给定时间段内创建的苹果数排序。例如: 所有树,按2010年1月1日至2011年1月1日期间创建的苹果总数排序 有可能吗?那么您有两张桌子 create table tree ( tree_id int unsigned primary key,...); 及 因此,我们可以在苹果上建立一个索引 sql_query = select app

假设我有一个1:多的关系:

树:苹果

Tree/Apple每个都有一个主键ID列,Apple有一些日期属性/列(创建于)

使用sphinx,我想检索所有树,按给定时间段内创建的苹果数排序。例如:

所有树,按2010年1月1日至2011年1月1日期间创建的苹果总数排序

有可能吗?

那么您有两张桌子

create table tree ( tree_id int unsigned primary key,...);

因此,我们可以在苹果上建立一个索引

sql_query = select apple_id,tree_id,unix_timestamp(created_at) as created_at from apple
然后对其运行GROUPBY查询

$cl->setGroupBy('tree_id',SPH_GROUPBY_ATTR,'@count DESC');
@count虚拟属性将提供该树上的苹果数

设置过滤器的步骤

$cl->setFilterRange('created_at',strtotime('2010-01-01'),strtotime('2011-01-01'));
也因为您不使用它,所以可以将排名设置为“无”

$cl->setRankingMode(SPH_RANK_NONE);
为了清楚起见,您只需使用一个空白查询

$res = $cl->Query('',$index);

您的count属性没有考虑日期范围?是的,setFilterRange适用于setGroupBy
$res = $cl->Query('',$index);