Field Type 정의와 설정
Field Type 정의는 아래 4가지 형태의 정보를 포함할 수 있습니다:
- Field Type의 이름 (필수)
- 구현된 Class의 이름 (필수)
- 만약 File Type이 TextField라면, Field 분석을 위한 설명
- Field Type 설정 - 구현된 Class에 따릅니다. 일부 설정은 필수일 수 있습니다.
schema.xml에서의 Field Type 정의
Field Type은 schema.xml에 정의되어 있습니다. 각 Field Type은 fieldType 요소들 사이에 정의되어 있습니다. 각 요소들은 types 요소에 선택적으로 모을 수 있습니다. 아래는 text_general Type에 정의된 Field Type 예제입니다:
<tokenizer class="solr.StandardTokenizerFactory" /> <filter class="solr.StopFilterFactory" ignorecase="true" words="stopwords.txt" /> <filter class="solr.LowerCaseFilterFactory" /> <tokenizer class="solr.StandardTokenizerFactory" /> <filter class="solr.StopFilterFactory" ignorecase="true" words="stopwords.txt" /> <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignorecase="true" expand="true" /> <filter class="solr.LowerCaseFilterFactory" />
위 예제의 첫번째 줄은 Field Type의 이름(text_general)을 포함하고 있습니다. 구현된 클래스의 이름도 solr.TextField라고 명시되어 있습니다. 정의된 나머지 항목들은 Field 분석에 대한 내용들입니다. Analyzer와 Tokenizer, Filter에 대한 이해에 자세히 설명되어 있습니다.
구현된 클래스는 Field가 정확하게 처리되는지 확인해야합니다. schema.xml의 내부에 있는 클래스 이름 안에선 문자열 solr가 org.apache.solr.schema나 org.apache.solr.analysis의 약어로 처리됩니다. 그러니까 solr.TextField는 사실 정확하게는 org.apache.solr.schema.TextField입니다.
Field Type 설정
Field type의 class가 Field type의 행동의 대부분을 결정하지만, 선택적인 설정도 정의할 수 있습니다. 예를 들어 아래 date Field type의 정의는 sortMissingLast와 omitNorms, 두 개의 설정을 정의합니다.
<fieldtype name="date" class="solr.TrieDateField" sortmissinglast="true" omitnorms="true" />
주어진 Field type에 지정할 수 있는 설정은 아래 3가지 범주로 구분됩니다:
- Field type의 클래스에 지정된 설정
- Solr가 모든 Field type에 지원하는 일반 설정
- 기본 동작 대신 해당 Type을 사용하는 Field에 의해 상속되는 Field Type에 지정할 수 있는 Field 기본 설정
일반 설정
설정 |
설명 |
값 |
name |
FieldType의 이름입니다. 이 값은 "type" 속성에서 Field의 정의로 사용됩니다. 이름은 영문자와 숫자, 언더바(_)로만 구성하고, 숫자로 시작하지 않는걸 매우 권장합니다. 이런 구성법은 아직 엄격하게 적용하고 있지는 않습니다. |
|
class |
이 Type으로 저장하고 색인하는데 사용되는 클래스의 이름입니다. 접두어로 "solr."을 입력하면 해당 클래스가 어느 패키지에 있는지 Solr가 자동으로 식별합니다. ("solr.TextField"가 이렇게 작동합니다.) 만약 3rd Party의 클래스를 사용한다면, 해당 클래스의 전체 이름을 입력해야 합니다. 예를 들어 "solr.TextField"의 전체 이름은 "org.apache.solr.schema.TextField"입니다. |
|
positionIncrementGap |
다중값 Field를 위한 설정입니다. 가짜 구문 검색 방지를 위해 다중값 Field의 값들 사이의 간격을 지정합니다. |
integer |
autoGeneratePhraseQueries |
문자열 Field를 위한 설정입니다. 만약 이 값이 true라면, Solr는 자동으로 인접한 용어들에 대한 질의 구문을 생성합니다. 값이 false라면, 용어들을 한 구문으로 취급하기 위해 해당 문구를 큰따옴표(")로 묶어야 합니다. |
true 혹은 false |
docValuesFormat |
이 유형의 Field에 사용할 임의의 DocValuesFormat을 정의합니다. 이를 위해서는 SchemaCodecFactory와 같은 Schema 인식 코덱(Schema-aware codec)이 solrconfig.xml 안에 구성되어야 합니다. |
n/a |
postingsFormat |
이 유형의 Field에 사용할 임의의 PostingsFormat을 정의합니다. 이를 위해서는 SchemaCodecFactory와 같은 Schema 인식 코덱(Schema-aware codec)이 solrconfig.xml 안에 구성되어야 합니다. | n/a |
ⓘ
Lucene 색인의 하위호환성은 기본 코덱에 대해서만 지원됩니다.
만약 schema.xml의 postingsFormat나 docValuesFormat를 수정했다면, 더 최신버전으로 업그레이드 하기 위해 기본 코덱으로 되돌리고, 업그레이드 전에 색인을 기본 코덱으로 다시 작성하거나, 업그레이드 후에 전체 색인을 처음부터 다시 작성해야 합니다.
Field 기본 설정
이 설정들은 Field Type으로부터 제공되는 Field Type이나 개별 Field의 값을 오버라이드 하기 위해 지정됩니다. 각 설정의 기본값은 기본 FieldType 클래스에 의존합니다. 다시 말하자면 <schema/>의 version 속성에 따라 달라진다는 의미입니다. 아래 표는 schema.xml에 version="1.6"으로 선언되었다고 가정했을 때, Solr가 제공하는 대부분의 FieldType에 대한 기본값을 포함하고 있습니다.
설정 |
설명 |
값 |
기본값 |
indexed |
만약 이 값이 true라면, Field의 값이 일치하는 문서를 검색는 질의에 사용될 수 있습니다. |
true 혹은 false |
true |
stored |
만약 이 값이 true라면, Field의 실제 값이 질의에 의해 검색될 수 있습니다. |
true 혹은 false |
true |
docValues |
만약 이 값이 true라면, Field의 값은 열-지향적 DocValue 구조에 입력됩니다. | true 혹은 false |
false |
sortMissingFirst sortMissingLast |
정렬 Field가 존재하지 않을 때 문서의 위치를 제어합니다. |
true 혹은 false |
false |
multiValued |
만약 이 값이 true라면, 해당 Field Type의 단일 문서가 다중 값을 가질 수 있음을 표현합니다, | true 혹은 false |
false |
omitNorms |
만약 이 값이 true라면, 해당 Field와 관련된 제약을 생략합니다. (길이 표준화와 Field에 대한 색인시간 향상, 메모리 절약이 비활성화 됩니다.) int, float, data, bool, String과 같은 모든 원시 (분석하지 않는) Field Type은 기본값이 true입니다. Full-text Field나 색인시간 향상이 필요한 Field만 생략이 필요합니다. |
true 혹은 false |
* |
omitTermFreqAndPositions |
만약 이 값이 true라면, 해당 Field에 대한 용어 빈도, 위치, 게시에 따른 페이로드 등을 제한합니다. 이는 필요 없는 정보에 대한 Field의 퍼포먼스를 향상시킬 수 있습니다. 또한 색인에 필요한 저장 공간을 감소시킬 수 있습니다. 이 옵션을 사용한 Field로 인해 설정된 위치에 의존하는 질의는 자동으로 문서를 찾을 수 없게 됩니다. 이 설정의 기본값은 Text Field를 제외한 모든 Field Type에서 true입니다. |
true 혹은 false |
* |
omitPositions |
omitTermFreqAndPositions와 유사하지만, 용어 빈도 정보는 남깁니다. |
true 혹은 false |
* |
termVectors termPositions termOffsets termPayloads |
이 옵션들은 Solr가 전체 용어 선택적으로 해당하는 벡터의 각 용어의 발생에 대한 위치나 오프셋, 페이로드 정보를 포함하여 각 문서에 대한 전체용어 벡터를 유지하도록 지시합니다. 이 옵션들을 사용해서 검색어 강조나 다른 보조 기능들의 속도를 끌어올릴 수 있지만, 색인 크기를 상당히 키울 수 있습니다. Solr를 일반적인 용도로 사용하는 경우 필요하지 않습니다. |
true 혹은 false |
false |
required |
Solr가 해당 Field에 대한 값이 없는 문서를 추가하려는 시도를 거부하도록 합니다. 이 설정의 기본값은 false입니다. |
true 혹은 false |
false |
useDocValuesAsStored |
만약 Field가 DocValue를 활성화했다면, 이 설정을 true로 설정하였을 때 fl parameter에 "*"와 일치하면 (stored=false로 설정했어도) 저장된 Field처럼 Field가 반환되도록 합니다. |
true 혹은 false |
true |
오탈자와 오역은 댓글을 달아주세요. (Apache Solr 5.5 가이드 번역에 관하여...)