1

私はSolrを初めて使用し、次の例が可能かどうか疑問に思っています。

文字列フィールド「name」と複数値フィールド「ids」の2つのフィールドを持つコアがあるとします。ドキュメント1:

  • 名前:ティム
  • ID:1,2,3

およびドキュメント2:

  • 名前:ボブ
  • ID:2,3

ここで、次の要素を含む結果配列を取得するクエリが必要です。

  • 1ティム
  • 2ボブ
  • 2ティム
  • 3ボブ
  • 3ティム

したがって、クエリはmultiValueフィールドの値ごとに各ドキュメントを返します。最初に「ids」の値で並べ替えられ、次に名前で並べ替えられます。

すべてのドキュメントを選択し、クエリの後に他のものを処理すると言うことができますが、データがたくさんあるので、multiValuedフィールドの値ごとに最初の20個のドキュメントのみを並べ替えたいと思います。

これが可能で、誰かが私を助けてくれることを願っています!前もって感謝します。

4

2 に答える 2

0

ドキュメントを複数回返し、両方のフィールドで並べ替える場合は、組み合わせごとに個別のレコードを挿入する必要があります。
これはデータの多くの重複ですが、それを達成できる唯一の方法だと思います。グループ化
機能 を使用することもできますが、複数値フィールドでは機能しません。

于 2012-12-26T11:18:24.177 に答える
0

solrについてはよくわかりませんが、 SolrPhpClientを使用すると、次のように実行できる
と思います。

 $arr1 = explode(":","Name: Tim");
 $arr2 = explode(":","Ids: 1,2,3");
 $arr2 = explode(",",$arr2[1]);

 for($i=0;$i<$arr2.length;$i++){
 array_push( $arr3 ,array( $arr2[i] ,arr1[1] ) );
 }


2番目も同じことを
行い、array_mergeとso​​rt uを使用すると、目的の結果を得ることができます。

于 2012-12-26T11:13:03.000 に答える