4

solr schema.xml では、多くのフィールド タイプが定義されています。例えば

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

整数フィールドの定義です。

solr 内でカスタム フィールド タイプを定義する方法

solr のフィールド タイプとして、BigInteger、BigDecimal、Map などの Java タイプを追加することはできますか?

4

2 に答える 2

4

要素のschema.xmlに追加することで、solr で新しいカスタム フィールドを定義できます。<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 に答える