[solr] schema.xml 맛보기

Elastic/Elasticsearch 2012. 4. 24. 15:42

[원본링크]


Solr Wiki 에 정의된 내용을 한번 보도록 하죠.

The schema.xml file contains all of the details about which fields your documents can contain, and how those fields should be dealt with when adding documents to the index, or when querying those fields.

- 인덱싱 또는 쿼리 할때 문서의 field 에 대해 자세한 정보를 담고 있는 파일 이라고 되어 있군요.
- 결국, Solr 에서 색인이나 검색 시 문서의 기본 스키마 정보를 제공한다고 보면 됩니다.
- 뭐, 파일 이름도 그렇고 설명도 굳이 제가 설명하지 않아도 누구나 이해가 되는 내용이내요.. ^^;;


[Data Types]

The <types> section allows you to define a list of <fieldtype> declarations you wish to use in your schema, along with the underlying Solr class that should be used for that type, as well as the default options you want for fields that use that type.

- <types> 라는 지시어는 <fieldtype> 의 목록으로 구성 된다고 하는 군요.
- <fieldtype> 정의에 따라서 색인이나 검색 시 구현되는 방법에 영향을 미치게 됩니다.
- 내용이 너무 길어서 몽창 설명 하기는 어렵고.. 링크 참고하세요
- 단, 차분히 schema.xml 파일을 정독해 보시고 주석에 나와 있는 것 처럼 관련 내용들을 한번 씩은 보시는게 이해하는데 아주 좋습니다.


[Fields]
- 이 지시자는 문서를 추가 하거나 검색할때 사용합니다.

The <fields> section is where you list the individual <field> declarations you wish to use in your documents. Each <field> has a name that you will use to reference it when adding documents or executing searches, and an associated type which identifies the name of the fieldtype you wish to use for this field. There are various field options that apply to a field. These can be set in the field type declarations, and can also be overridden at an individual field's declaration.


- 주석에도 설명이 되어 있지만, 위에서 선언한 <fieldtype> 의 name 에 해당하는 label 을 드디어 사용하게 됩니다. 아마도 어디서 사용하는지 궁금 하셨을 수도 있겠내요.

 <!-- Valid attributes for fields:
     name: mandatory - the name for the field
     type: mandatory - the name of a previously defined type from the 
       <types> section
     indexed: true if this field should be indexed (searchable or sortable)
     stored: true if this field should be retrievable
     multiValued: true if this field may contain multiple values per document
     omitNorms: (expert) set to true to omit the norms associated with
       this field (this disables length normalization and index-time
       boosting for the field, and saves some memory).  Only full-text
       fields or fields that need an index-time boost need norms.
       Norms are omitted for primitive (non-analyzed) types by default.
     termVectors: [false] set to true to store the term vector for a
       given field.
       When using MoreLikeThis, fields used for similarity should be
       stored for best performance.
     termPositions: Store position information with the term vector.  
       This will increase storage costs.
     termOffsets: Store offset information with the term vector. This 
       will increase storage costs.
     required: The field is required.  It will throw an error if the
       value does not exist
     default: a value that should be used if no value is specified
       when adding a document.
   -->

- <dynamicField> 이넘은 field name 을 찾지 못하게 되면 특정 패턴에 매칭된 이름을 사용하게 됩니다.


[Unique Key]
- 색인하는 전체 문서에 대한 unique key 로 사용 됩니다.
- 이 Key 값으로 문서를 업데이트 하거나 삭제 하거나 할 수 있겠죠.

The Unique Key Field

The <uniqueKey> declaration can be used to inform Solr that there is a field in your index which should be unique for all documents. If a document is added that contains the same value for this field as an existing document, the old document will be deleted.

It is not mandatory for a schema to have a uniqueKey field.

Note that if you have enabled the QueryElevationComponent in solrconfig.xml it requires the schema to have a uniqueKey of type StrField. It cannot be, for example, an int field.


[기타]
- 기타라고 빼놓았지만 역시 중요한 지시자 입니다.

[defaultSearchField]
- 검색 시 정확한 필드명이 지정되지 않았을 경우 기본 검색 필드로 사용 합니다.

[solrQueryParser]
- AND, OR 오퍼레이션을 정의 합니다.

[copyField]
- source 에 해당하는 field 의 value 를 dest 에 해당하는 field 로 복사 합니다.

[similarity]
- 색인 작업 시 solr 가 사용하는 하위 클래스를 지정하는데 사용 합니다.
- 없다면, Lucene 의 DefaultSimilarity 를 사용합니다.


: