我已经通过 FOSElasticaBundle 用 elastica 设置了 symfony2 项目。我已经使用基本设置为用户文档(Mongo)设置了索引。现在,当我搜索用户时,我希望该搜索由指定用户的关注者优先考虑(返回搜索顶部)。关注者存储在单独的文档中(结构:id、follower_id、folowee_id)。这样做的最佳方法是什么?
问问题
146 次
1 回答
0
好的,所以经过研究,似乎唯一的方法是首先在关注文档上进行查找,然后最终将结果与用户上的查找合并。首先在关注实体上添加索引,例如:
follow:
mappings:
follower: ~
followee :
type : object
properties :
id : ~
现在我可以轻松地使用 followee id 和 followee 文本字符串(前缀)进行搜索:
$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);
于 2014-11-25T10:19:00.360 回答