在 solr schema.xml 中定义了许多字段类型。例如
<fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/>
是整数字段的定义。
我们如何在 solr 中定义自定义字段类型?
是否可以在 solr 中添加 Java 类型,如 BigInteger、BigDecimal、Map 和其他类型作为字段类型?
您可以在 solr 中定义新的自定义字段,方法是将它们添加到schema.xml
元素中<fields>
:
<fields>
...
<field name="newfieldname" type="text_general" indexed="true" stored="true" multiValued="true"/>
...
</fields>
要了解支持的类型(用于<fieldType>
在 Solr 中定义,然后用于定义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
默认定义了几个......但是您可以定义更多,不确定您是否可以定义您要求的那些。