2012-10-09 1 views
0

Solr에 "인덱싱 된"있지만 "저장 됨"이 아닌 여러 text_en 필드가 있습니다. 나는 MongoDb에있는이 문서의 큰 텍스트 값을 저장한다. 그러나 Solr 색인을 보면 모든 문서에는 이름이없는 필드가 있습니다. 그러나 문서의 모든 필드 (인덱싱되었지만 저장되지 않음 포함)는이 필드에 저장됩니다.Solr 4 인덱싱을 사용하면 이름이없는 필드가 만들어 지지만 모든 필드 값은이 필드의 값으로 연결됩니다.

이 필드는 무엇이며 어떻게 제거 할 수 있습니까? 내 색인의 크기가 커지고 있습니다.

<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

schema.xml 파일의 섹션과 Solr의 답변을 귀하의 질문에 추가 할 수 있습니까? 또한 Solr 인덱스에 항목을 추가 할 때 사용하는 프로세스는 무엇입니까? –

+0

업데이트 된 쿼리를 사용하십시오. 내 schema.xml 필드 섹션 양식을 추가했습니다. – user1732578

답변

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을 참조하십시오.

관련 문제