Solr schema.xml詳細

6443 ワード

typeノード


まずtypeノードを見てみましょう.ここでは、name、class、positionIncrementGapなどのパラメータを含むFieldTypeサブノードを定義します.必須パラメータ:
  • name:このFieldTypeの名前です.
  • class:orgを指す.apache.solr.analysisパッケージに対応するclass名は、このタイプの動作を定義するために使用されます.

  • その他のオプション属性:
  • sortMissingLast、sortMissingFirstの2つのプロパティは、Stringソートを内在的に使用できるタイプで使用されます.デフォルトfalseは、string、boolean、sint、slong、sfloat、sdouble、pdateのフィールドタイプに適用されます.
  • sortMissingLast="true"であり、このfieldのデータがこのfieldのデータの後に並べられていない.要求時の並べ替えルールにかかわらず、Javaでは、このフィールドがNULLで後ろに並べられていることを意味する.
  • sortMissingFirst="true"であり、ソート規則はsortMissingLastとは逆である.
  • positionIncrementGap:オプションのプロパティで、同じドキュメント内のこのタイプのデータの空白間隔を定義し、フレーズマッチングエラーを回避します.

  • 構成ではstringタイプのclassはsolr.StrFieldは、このフィールドは分析されずに格納されます.つまり、分詞されません.
    文章や長いテキストでは、特定のフィールドを検索したときに正しい結果を出すことができるように、分詞する必要があります.別のclassを使うことができますsolrTextField.これにより、ユーザーはアナライザを使用してインデックスとクエリーをカスタマイズできます.アナライザには、1つの単語(tokenizer)と複数のフィルタ(filter)が含まれます.
    1つの標準的な分詞:
    <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
        <analyzer type="index">
            <tokenizer class="solr.StandardTokenizerFactory" />
            <filter class="solr.LowerCaseFilterFactory" />
        </analyzer>
        <analyzer type="query">
            <tokenizer class="solr.StandardTokenizerFactory" />
            <filter class="solr.LowerCaseFilterFactory" />
            <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
        </analyzer>
    </fieldType>
    

    fieldType, field 。 analyzer, index, query,index ,query 。

    tokenizer Tokenizer。 2 filter, solr.StopFilterFactory,solr.LowerCaseFilterFactory。stop word filter the、 of、 on token , , , 。Lower case filter token , index

    analyzer, mmseg4j :

    <fieldType name="text_zh" class="solr.TextField" positionIncrementGap="100">
        <analyzer> 
            <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="complex" />
        </analyzer>
    </fieldType>
    

    filedノード

    filed 。

    • name: , 。
    • type: ika text_ika, fieldType name。 ,string , , type。
    • indexed: , true (earchable、 sortable、 facetable)。
    • stored: , , false 。
    • multiValued: ,SOLR 。 true, 。
    • omitNorms: Norm, , field need an index-time boost field norm。( , )
    • termVectors: true, term vector。 MoreLikeThis, field 。
    • termPositions: term vector , 。
    • termOffsets: term vector , 。
    • default: , 。
    • docValues:Solr 4.2
    • docValuesFormat: Disk Memory

    <field name="manu_exact" type="string" indexed="false" stored="false" multiValued="true"
       docValues="true" />

    copyFieldノード

    ? , copyField。 :

    <copyField source="name" dest="all" maxChars="30000"/>
    <copyField source="address" dest="all" maxChars="30000"/>
    

    • field ,
    • field , 2

    all , , all OK 。

    • source: field
    • dest: field
    • maxChars:

    , , , 。indexed true,stored false。

    copyField field fields 。

    dynamicFieldノード

    , , dynamicField

    :name *_i、そのtypeをintとして すると、このフィールドを するとき、タスクが_iで したフィールドは、この に するとみなされる. えばname_ischool_i

    <dynamicField name="*_i"  type="int"    indexed="true"  stored="true"/> 
    <dynamicField name="*_s"  type="string"  indexed="true"  stored="true"/>
    <dynamicField name="*_l"  type="long"   indexed="true"  stored="true"/>
    

    UniqueKeyノード


    solrは、uniqueKeyノードで された のフィールドをidに する があります.
    :
    <uniqueKey>id</uniqueKey>
    

    defaultSearchFieldノード


    デフォルトで するフィールドは、 するフィールドをallフィールドにコピーしました.ここでallに すればいいです.
    <defaultSearchField>all</defaultSearchField>
    

    solrQueryParserノード


    デフォルトの オペレータパラメータ、および フレーズ の は、ANDで を げ、ORでカバーを やし、ANDを し、 で することもできます. えば「 アップル」を し、ANDを って「 ANDアップル」とデフォルトで します.
    <solrQueryParser defaultOperator="OR"/>