3

私はSOLRを初めて使用します。現在、クエリはそれぞれの郵便番号を持つ会社を返します。郵便番号は配列型のフィールドです。結果の一部には郵便番号ノードの複数の値が含まれ、単一の値しか含まれないものもあります。

結果セット:

<doc>
 <str name="company">Alien Technology</str>
 <arr name="postCode">
   <str>2068</str>
   <str>2065</str>
   <str>2066</str>
   <str>2061</str>
   <str>2077</str>
 </arr>
 ....
</doc>

<doc>
 <str name="company">Cris' Sports</str>
 <arr name="postCode">
   <str>2068</str>
 </arr>
 ...
</doc>

<doc>
 <str name="company">Hyper Consultation Firm</str>
 <arr name="postCode">
   <str>2068</str>
   <str>2000</str>
   <str>2071</str>
 </arr>
 ...
</doc>

<doc>
 <str name="company">DJ Goods & Gadgets</str>
 <arr name="postCode">
   <str>2068</str>
 </arr>
 ...
</doc>

...

ここでの私の質問は、postCode フィールドに複数の値を含むデータをフェッチし、postCode フィールドに 1 つの値しか持たないデータを除外することは可能ですか。これはSOLRクエリを使用して可能ですか?

例:

postCode = 2068 で検索しました

最初のクエリでは、postCode フィールドの値が 1 つしかないため、Cris Sports と DJ Goods and Gadgets のみが返されます。

私の 2 番目のクエリは、Alien Technology と Hyper Consultation Firm のみを返します。これは、両方の postCode フィールドに複数の値が含まれているためです。

みんな、ありがとう!

4

2 に答える 2

1

複数値を持つフィールド内のアイテムの数を直接取得する方法や、関数クエリで同じ数を計算する方法はありません。
インデックス作成中に常にフィールド数を維持し、クエリ時に使用できます。

于 2013-04-09T08:20:15.463 に答える
0

スコア (降順) で並べ替えると、値が 1 つだけのフィールドのスコアが高くなるため、他のフィールドよりも前に表示されます。結果セットを制限して、スコアが max-score に一致するドキュメントのみを持つようにする方法があるかどうかはわかりません。クライアントでそれを行うことができますか?

于 2013-04-09T17:52:35.163 に答える