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 回答