Solr 4索引创建一个没有名称的字段,但所有字段值都连接为此字段的值

时间:2012-10-09 17:48:19

标签: solr

我在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>

1 个答案:

答案 0 :(得分:3)

由于schema.xml文件中的以下条目

,您会看到此行为
<dynamicField indexed="true" multiValued="true" name="*" stored="true" type="text_en"/>

这是一个通用捕获您在架构中定义的所有字段。如果通过约定(通过其他dynamicField设置)或特定字段名称将任何文档传递到与模式中的其他字段不匹配的索引字段名称,Solr将“动态”创建该字段作为{{1}可以有多个条目的类型,因为它设置为text_en。由于multiValued="true"设置,这些字段也都存储了。我建议从schema.xml中删除此字段并重新索引数据。

有关此文件中设置的更多详细信息,请参阅Solr Wiki上的 - SchemaXml