0

私は Solr を初めて使用し、次のプロジェクトの solr スキーマを設計中です。

私の質問は、CSV 形式で多値を保持する単一のフィールドと比較した場合の多値フィールドの利点 (効率/実行時間など) は何ですか。

例: car というフィールドを考えてみましょう。solr検索エンジンを設計している場合、どちらが優れていますか。schema/doc 構文は無視してください。

<Car>A</Car>
<Car>B</Car>
<Car>C</Car>

また

<Car> A,B,C</Car>
4

4 に答える 4

1

フィールドに複数の値がある場合は、おそらく複数値フィールドを使用する必要があります。

多値のものは、間違った一致を防ぐことができます。
例: 複数の作成者がいるドキュメントがある場合。AB & CD
単一のフィールドとしてインデックスを作成すると、"BC" (または小さなスロップ) に一致するフレーズを検索すると、単語が並んで表示されるため、このドキュメントと一致する場合があります。

複数の値を持つフィールドは、適切な位置の増分値でこのような一致を防ぎます。

また、多値フィールドを使用すると、結果を正しくフィルタリングできます。
q=authores:"B C"または、タグを使用してq=query&fq=authors:"B C"、フィルタ キャッシュを利用し、クエリのパフォーマンスを向上させるような結果を除外します。

于 2012-08-31T07:33:43.843 に答える
0

主な利点は、インデックスの設計だと思います。この 3 つの値を 1 つのフィールドに入れると、このフィールドは検索後の 1 つの値を表します。multivaluefields を使用すると、値ごとに新しいフィールドが作成されて表示されます。これにはどのような意味がありますか:

想像してみてください。インデックスを拡張したいとします。新しいフィールドの 1 つの値は次のようになります。

<LengthOfCar>5,0</LengthOfCar>

与えられた結果を処理したい場合、"," で区切られているため、どの値が多値でどれが多値でないかを判断できません。あなたにとっては明らかかもしれませんが、他のすべてのユーザーは違いを理解できません。結果は単一のフィールドになります。

<doc>
<str name="Car">A,B,C</str>
</doc>

複数値フィールドの結果は次のようになります。

<doc>
<arr name="Car">
<str>A</str>
<str>B</str>
<str>C</str>
</arr>
</doc>

ご覧のとおり、多値フィールドの結果ははるかに意味があります。そして、それを使用する方がはるかに簡単です(おそらく、xsltなどを使用したいでしょう)。

効率に関するあなたの質問によると、パフォーマンスと実行時間に違いはないと思います。Solr は非常に高速で、違いがあったとしてもその違いに気付くことさえありません。

1 つのフィールドに 3 つの異なる値があるため、多値フィールドを使用することをお勧めします。

于 2012-08-31T06:57:28.053 に答える
0

複数値フィールドを使用することで、柔軟性が向上します。複数値フィールドを使用すると、次のように特定の値で結果を検索およびフィルタリングできます。

q=car:A or fq=car:A

パフォーマンスとして、複数値フィールドと単一値フィールドのインデックス作成/検索に違いはありません。

このメール投稿では、多値フィールドがファセットのパフォーマンスに影響を与えると述べています。

MultiValued フィールドは、常に FieldCache アルゴリズムではなく TermEnum アルゴリズムを使用します。

TermEnum はフィールド内の限られた数の異なるインデックス付き用語に適しており、ドキュメントごとのフィールドごとに複数の用語を許可しますが、FieldCache はドキュメントの数に比べて多数のインデックス付き値に適しており、フィールドごとに単一の用語のみを許可しますドキュメントごと。

于 2012-08-31T07:49:04.380 に答える