在solr schema.xml中定義了許多字段類型。 例如在solr中添加自定義字段類型
<fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/>
是一個整數字段的定義。
我們如何在solr中定義自定義字段類型?
是否可以在solr中添加諸如BigInteger,BigDecimal,Map和其他類型的字段類型之類的Java類型?
在solr schema.xml中定義了許多字段類型。 例如在solr中添加自定義字段類型
<fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/>
是一個整數字段的定義。
我們如何在solr中定義自定義字段類型?
是否可以在solr中添加諸如BigInteger,BigDecimal,Map和其他類型的字段類型之類的Java類型?
您可以通過在<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
默認定義...但你可以定義更多,不知道你是否可以定義你要求的。
但是我們可以將java類型添加到solr模式嗎? – MinusInfinity
我不是100%確定,但我不這麼認爲。我想你需要將它們映射到Solr數據類型,例如:「bigint」到「TrieLongField」,當你將它們存儲在Solr中時...看看這個信息我發現,映射Java(在這種情況下,它是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