fra*_*rak 0 php pagination symfony elasticsearch elastica
我刚刚开始使用FOSElasticaBundle,到目前为止发现它真的很好用.我不确定是否是我对bundle/Elastica的无知或者我对ElasticSearch的一般知识缺乏,但是有可能使用分页的CustomScore查询吗?
如果我尝试在CustomQuery对象上调用setFrom/setSize,我被告知该方法不存在.如果我在那里创建一个Query对象并设置setFrom和size并将此查询传递给CustomScore查询对象,则忽略分页参数.我已经为我的代码包含了一份副本...
$queryString = new QueryString();
$queryString->setFields(array('_all'))
->setDefaultOperator('OR')
->setQuery($terms);
$query = new \Elastica\Query();
$query->setQuery($queryString);
$query->setSize($maxItems);
$query->setFrom(($page - 1) * $maxItems);
$custScoreQuery = new CustomScore();
$custScoreQuery->setQuery($query);
$custScoreQuery->setScript("_score * (doc['section.id'] == 7) ? 0.5 : 1");
$index = $this->get('fos_elastica.index.search_en_gb');
$results = $index->search($custScoreQuery);
Run Code Online (Sandbox Code Playgroud)
任何帮助都乐意接受:o)
Size和From必须应用于顶级查询,您将在此处丢失它们.
试试这个:
$queryString = new QueryString();
$queryString->setFields(array('_all'))
->setDefaultOperator('OR')
->setQuery($terms);
$custScoreQuery = new CustomScore();
$custScoreQuery->setQuery($queryString);
$custScoreQuery->setScript("_score * (doc['section.id'] == 7) ? 0.5 : 1");
$query = new \Elastica\Query();
$query->setQuery($custScoreQuery);
$query->setSize($maxItems);
$query->setFrom(($page - 1) * $maxItems);
$index = $this->get('fos_elastica.index.search_en_gb');
$results = $index->search($query);
Run Code Online (Sandbox Code Playgroud)
此外,打开Elastica中的日志,您将能够看到Json查询中是否存在"大小"和"偏移量".话虽如此,分页当然与自定义分数一起使用.
| 归档时间: |
|
| 查看次数: |
3340 次 |
| 最近记录: |