0

単一のフィールド名で一連の値をインデックス化する必要がある場合、複数値フィールドを使用する必要がありますか?それとも単一値フィールドを使用して、このフィールドのすべての値を空白で区切る必要がありますか?

フィールド タイプは文字列です。

ありがとう。

4

1 に答える 1

3

多値フィールドは配列またはリストと考えることができます...そしてあなたの質問では、そのフィールドでどのような操作を実行するかによって異なります。

そのフィールドに何かを頻繁に追加し続ける場合は、多値フィールドを使用する必要があります。追加する新しいアイテムを取得するたびに単一の文字列フィールドを設定する代わりに、単純に複数値フィールドに追加できます。また、多値フィールドの場合、更新中にリスト全体を知る必要はありません。ただし、単一のフィールドの場合、その中の古い値を知る必要があります..

より明確にするために;

「aaa bbb ccc」にインデックスを付ける必要があるとしましょう..それらを単一のフィールドに入れると、次のようになります

<str>aaa bbb ccc</str>

このフィールドに ddd を追加する必要がある場合は、フィールドに実際に aaa bbb ccc ddd を追加する必要があります (更新するたびにフィールドの古い値を確認したくないと思います)。

ただし、多値フィールドを使用する場合、aaa bbb ccc の場合は次のようになります

<field><str>aaa</str><str>bbb</str><str>ccc</str></field>

この場合、ddd を追加する必要がある場合、古い値を知る必要はありません。ddd を追加するだけで完了です...

ただし、フィールドからの削除もある場合は、単一フィールドを使用する必要があります。solr は多値フィールドからの削除をサポートしていないためです (ただし、ソース コードをハッキングすることで簡単に削除できます)。

お役に立てば幸いです...あなたが提供した情報は少なすぎて明確な答えが得られません

于 2012-11-07T07:08:31.667 に答える