我通过FOSElasticaBundle设置了弹性的symfony2项目。 我已经使用基本设置为用户文档(Mongo)设置了索引。 现在,当我搜索用户时,我希望搜索按指定用户的关注者优先排序(返回搜索顶部)。 关注者存储在单独的文档中(结构:id,follower_id,folowee_id)。 这样做的最佳方法是什么?
答案 0 :(得分:0)
好的,所以经过研究似乎只有首先在跟随文档上进行查找,然后最终将结果与find一起合并到用户身上。 首先在跟随实体上添加索引,如:
follow:
mappings:
follower: ~
followee :
type : object
properties :
id : ~
现在我可以轻松地使用followee id和followers文本字符串(前缀)进行搜索:
$baseQuery = new \Elastica\Query\Prefix();
$baseQuery->setPrefix('follower', $text);
$filter = new \Elastica\Filter\Term();
$filter->setTerm('id', $id);
$subquery = new \Elastica\Query\Filtered($baseQuery, $filter);
$query = new \Elastica\Query();
$query->setSize(10);
$query->setQuery($subquery);
$results = $service->find($query);