4

在 solr schema.xml 中定义了许多字段类型。例如

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

是整数字段的定义。

我们如何在 solr 中定义自定义字段类型?

是否可以在 solr 中添加 Java 类型,如 BigInteger、BigDecimal、Map 和其他类型作为字段类型?

4

2 回答 2

4

您可以在 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默认定义了几个......但是您可以定义更多,不确定您是否可以定义您要求的那些。

于 2013-07-31T06:46:38.683 回答
2

您可以通过扩展FieldType类来定义新的 fieldType,您可以在其中为字段定义自己的分析器并添加其他属性。例如,TextField是 FieldType 的子类。

于 2013-08-02T16:49:41.007 回答