0

我已经通过 FOSElasticaBundle 用 elastica 设置了 symfony2 项目。我已经使用基本设置为用户文档(Mongo)设置了索引。现在,当我搜索用户时,我希望该搜索由指定用户的关注者优先考虑(返回搜索顶部)。关注者存储在单独的文档中(结构:id、follower_id、folowee_id)。这样做的最佳方法是什么?

4

1 回答 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 回答