0

Solr には、「インデックス化」されているが「保存」されていない text_en フィールドがいくつかあります。ドキュメントのこれらの大きなテキスト値を MongoDb に保存します。しかし、Solr インデックスを見ると、すべてのドキュメントに名前のないフィールドがあります。ただし、文書のすべてのフィールド (索引付けされているが保管されていないものを含む) は、このフィールドに保管されます。

このフィールドとは何ですか?どうすればそれを削除できますか? インデックスのサイズを増やしています。

 <fields>
  <dynamicField indexed="true" name="*_i" stored="true" type="int"/>
  <dynamicField indexed="true" name="*_s" stored="true" type="string"/>
  <dynamicField indexed="true" name="*_l" stored="true" type="long"/>
  <dynamicField indexed="true" name="*_t" stored="true" type="text_en"/>
  <dynamicField indexed="true" name="*_b" stored="true" type="boolean"/>
  <dynamicField indexed="true" name="*_f" stored="true" type="float"/>
  <dynamicField indexed="true" name="*_d" stored="true" type="double"/>
  <dynamicField indexed="true" name="*_tiled" stored="false" type="double"/>
  <dynamicField indexed="true" name="*_dt" stored="true" type="date"/>
  <dynamicField indexed="true" name="*_p" stored="true" type="location"/>
  <dynamicField name="random_*" type="random"/>
  <dynamicField indexed="true" multiValued="true" name="attr_*" stored="true" type="string"/>
  <dynamicField indexed="true" multiValued="true" name="*" stored="true" type="text_en"/>
  <dynamicField indexed="true" multiValued="true" name="attr_*" stored="true" type="string"/>
  <!-- My Custom Fields -->
  <uniqueKey>id</uniqueKey>
  <defaultSearchField>text_all</defaultSearchField>
  <solrQueryParser defaultOperator="AND"/>

  <copyField dest="author_display" source="author"/>
  <copyField dest="keywords_display" source="keywords"/>

  <copyField dest="text_all" source="id"/>
  <copyField dest="text_all" source="url"/>
  <copyField dest="text_all" source="title"/>
  <copyField dest="text_all" source="description"/>
  <copyField dest="text_all" source="keywords"/>
  <copyField dest="text_all" source="author"/>
  <copyField dest="text_all" source="body"/>
  <copyField dest="text_all" source="*_t"/>

  <copyField dest="spell" source="title"/>
  <copyField dest="spell" source="body"/>
  <copyField dest="spell" source="description"/>
  <copyField dest="spell" source="author"/>

  <copyField dest="autocomplete" source="title"/>
  <copyField dest="autocomplete" source="body"/>
  <copyField dest="autocomplete" source="description"/>
  <copyField dest="autocomplete" source="author"/>
</fields>
4

1 に答える 1

3

schema.xml ファイルに次のエントリがあるため、この動作が発生しています。

<dynamicField indexed="true" multiValued="true" name="*" stored="true" type="text_en"/>

これは、スキーマで定義した一般的なキャッチオール フィールドです。慣例 (他の dynamicField 設定による) または特定のフィールド名のいずれかにより、スキーマ内の他のフィールド名と一致しないドキュメントをインデックス フィールド名に渡す場合、Solr はそのフィールドを「オンザフライ」で作成text_enできます。として設定されているため、複数のエントリmultiValued="true"。そして、これらのフィールドはすべて、stored="true"設定のために保存されています。schema.xml からこのフィールドを削除し、データのインデックスを再作成することをお勧めします。

このファイルの設定の詳細については、Solr Wiki のSchemaXmlを参照してください。

于 2012-10-09T19:03:58.257 に答える