3

フィールドを stored=false に設定してデフォルト値を指定すると、Solr (4.x) で奇妙な問題が発生します。すべてを明確にするために、私のスキーマは次のようなものです。

<field name="field1" type="tint" indexed="true" stored="true" />
<field name="field2" type="tint" indexed="true" stored="true" />
<field name="field3" type="tint" indexed="true" stored="true" />
<field name="field4" type="tint" indexed="true" stored="true" />
<field name="field5" type="tint" indexed="true" stored="false" default="0" />

デフォルトでは、各ドキュメントの先頭に field5=0 があります。次に、ドキュメントを更新し、いくつかのドキュメントに対して field5=1 を設定します。また、field5=1 のドキュメントを更新すると、すべて field5=0 に戻ります。しかし、field5 が stored=true の場合、問題はありません。そのフィールドの更新はありませんが、デフォルト値に戻ることはありません...

これを克服するための解決策はありますか?もちろん、フィールドを stored=true のままにしておくことはできますが、インデックスが大きくなるため、オーバーヘッドのために検索が遅くなります...

4

2 に答える 2

4

バックグラウンドで、更新操作はフィールドの格納された値を取得し、新しいエンティティ全体を再インデックス化します。そのため、フィールドが保存済みとしてマークされていない場合、アトミック更新で使用することはできません。通常、保存されていないフィールドは消えるだけで、デフォルト値との相互作用は異常です。

インデックス設計のこの段階では、特に数値の場合は、パフォーマンスについて心配する必要はありません。後で使用できるあらゆる種類の最適化が内部にあり、ボトルネックが予期した場所にない場合があります。

于 2013-10-10T01:04:39.890 に答える