2

我在 Solr 中进行查询时遇到了一些麻烦。问题是:我必须能够检索对指定字段具有相同值的文档,但只有当该值对指定用户出现超过 X 次时才应该检索它们。在pseudosql中它会是这样的:

select user_id from documents
where my_field="my_value"
and
(select count(*) from documents where my_field="my_value" and user_id=super.user_id) > X

我知道 solr 会为您所做的每个查询返回一个“numFound”,但我不知道如何在子查询中检索该值。

My Solr 的组织方式是用户是一个文档,用户的属性(例如姓名、年龄等)被分组在另一个文档中,其中包含“root_id”字段。因此,让我们假设以下查询获取其子项具有前缀“some_prefix”的所有根文档。

is_root:true AND _query_:"{!join from=root_id to=id}requests_prefix:\"some_prefix\""

现在,我怎样才能获得具有多个匹配 'requests_prefix:"some_prefix"' 或任何其他条件的 X 个子级的根文档(某种意义上的用户)?可能吗?

PS 必须在单个查询中完成,可以随意添加字段,但应保留根/子结构(优先)。

4

1 回答 1

2

事实证明,Solr 不符合我的需求,我最终使用了 ElasticSearch 及其 nativa 父子映射。

于 2014-02-07T20:21:29.050 回答