1

groupId と assetId の 2 つのフィールドを持つ solr のドキュメントのリストがあります。私が望むのは、リストのシーケンスがすべての groupId ドキュメントをまとめて、その中に、assetId 番号に従って配置する必要があることです。このシナリオは、並べ替えパラメーターを変更することで簡単に利用できます。

sort=groupId asc,assetId asc

しかし、次に必要なのは、いくつかの groupId をブーストして最初に表示する必要があることです。

したがって、私の質問は、これをソートパラメーターでどのように言及するか、つまり、グループIDの一部を他のものと比較してブーストする方法です。各 groupId セクションは、assetId 値に基づいて内部的に並べ替えられます。

例を通して:

Solr のデータ:

GroupId AssetId
 1      A
 2      A
 1      C
 1      B
 3      C
 3      B
 2      C
 3      A
 2      B

そう

sort=groupId asc,assetId asc

結果として

GroupId AssetId
1       A
1       B
1       C
2       A
2       B
2       C
3       A
3       B
3       C

私が必要とするのは groupId 3 であり、2 の前にそれらを表示するために 1 をブーストする必要があります。

GroupId AssetId
3       A
3       B
3       C
1       A
1       B
1       C
2       A
2       B
2       C

参考までに、私はSolrをLiferayで使用しています。ブーストする必要があるgroupIdは動的な数値です。つまり、現在liferayにログインしているユーザーに依存します。ソートフィールドのどの値がより重要であるかを指定するために、ソートパラメータでブーストについて言及することは可能ですか?

4

1 に答える 1

2

その時、私はこの問題を解決しました。並べ替えパラメーターで Solr の関数クエリの概念を使用しました。クエリ({!v="3,1"})

概念的には、3 と 1 が私の groupId であり、残りの groupId の上にある必要がある以下のようなものでした。他の 2 つのソート パラメータ groupId と assetId を追加したので、基本的にこれら 2 つの groupId をブーストし、各 groupId 内で、assetId でさらにソートします。

sort=query({!v="groupId:3^10.0 groupId:1^5.0"}) desc, groupId asc,assetId asc

注: 正確な構文は覚えていません。したがって、関数クエリの概念を掘り下げて、正確な構文を取得してください。

于 2016-03-19T00:58:03.613 に答える