2

Solr でクエリを作成しようとすると、少し問題が発生します。問題は、指定されたフィールドに同じ値を持つドキュメントを取得できなければならないが、指定されたユーザーに対してこの値が X 回以上表示された場合にのみ取得する必要があることです。疑似SQLでは、次のようになります。

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 に答える