2013-07-31 4 views
4

solr schema.xml에서 많은 필드 유형이 정의됩니다. 예solr에 사용자 정의 필드 유형 추가

<fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/> 

위한 정수 필드 정의이다.

solr에서 사용자 정의 필드 유형을 정의하는 방법은 무엇입니까?

BigInteger, BigDecimal, Map 및 기타 유형과 같은 Java 유형을 solr의 필드 유형으로 추가 할 수 있습니까?

답변

5

당신은 <fields> 요소에 schema.xml에 추가하여 SOLR의 새로운 사용자 정의 필드를 정의 할 수 있습니다

<fields> 
... 
<field name="newfieldname" type="text_general" indexed="true" stored="true" multiValued="true"/> 
... 
</fields> 

다음이다 SOLR에서 <fieldType>을 정의하는 데 사용되는 지원되는 유형 (에 대한 개요를 가지고 field 요소를 정의하는 데 사용됨)을 보려면 https://cwiki.apache.org/confluence/display/solr/Field+Types+Included+with+Solr 링크를 참조하십시오. 예를 들어, type "text_general은"으로의 schema.xml에 정의되어

<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer type="index"> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
    <analyzer type="query"> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /> 
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
</fieldType> 

당신은 기본적인 필드 유형으로 class="solr.TextField"를 사용하여 볼 수 있습니다. Solr 스키마에는 기본적으로 여러 개의 types이 정의되어 있지만 더 많은 것을 정의 할 수 있습니다. 사용자가 원하는 것을 정의 할 수 있는지 확실하지 않습니다.

+0

그러나 solr 스키마에 java 유형을 추가 할 수 있습니까? – MinusInfinity

+1

100 % 확신 할 수는 없지만 그렇게 생각하지는 않습니다. Solr 데이터 타입에 "매핑"할 필요가 있다고 생각합니다 : "bigint"에서 "TrieLongField"로 Solr에 저장할 때 ...이 정보를 살펴보십시오.이 경우 매핑 자바 (이 경우에는 SQL) 데이터 유형을 Solr : https://code.google.com/p/solr-jdbc/source/browse/trunk/solr-jdbc/src/main/java/com/google/code/solr_jdbc/value/DataType .java? r = 94 아마도 여러분은 데이터 유형을 개발하기 위해이 줄을 따라 가야 할 것입니다. – emgsilva

3

FieldType 클래스를 확장하여 새 fieldType을 정의 할 수 있습니다. 여기서 필드에 대한 자체 분석기를 정의하고 다른 속성을 추가 할 수 있습니다. 예를 들어 TextField은 FieldType의 하위 클래스입니다.

관련 문제