sor学習之-Field、CopyField、DynamicField

3368 ワード

上の一節に7、8スロットがあります。FieldTypeについて話してみました。 実は簡単に考えられます。FieldTypeは私達がJavaでカスタムしたタイプのようです。
 
Field:
   Fieldはフィールドです。Fieldを定義するのは簡単です。
 
<field name="price" type="sfloat" indexed="true" stored="true"/>
基本的にプロパティもFieldTypeと似ていますが、彼の属性はFieldTypeの同名の属性をカバーします。
 
 
CopyField(この内容は直接sor中国語網copyから来る):
      
複数のフィールドを複数回使えるようにしたいかもしれません。ソロはフィールドコピー機構があり、複数の異なるタイプのフィールドを一つのフィールドに集中させることができる。フィールドコピーは主に2つの概念に関連しています。sourceとdestination、もう一つはコピーするフィールド、もう一つはどのフィールドにコピーするべきですか?以下は例です。
1<copyField source="cat" dest="text" maxChars="30000" /> 
上記の例では、textフィールドにデータがあれば、catフィールドの内容はtextフィールドに追加されます。maxCharsパラメータは、コピーされた文字の数を制限するためのintタイプパラメータです。
sourceとdestinationはすべてワイルドカードをサポートします。以下は一つで全てを_にします。t最後のフィールドをすべてテキストフィールドにコピーします。
1<copyField source="*_t" dest="text" maxChars="25000" />    実は簡単な話です。例えば、Javaを含むブログを調べたら、必ず内容を調べてください。タイトルはJavaを含んでいますか?しかし、sourはSQLのように、where tittle like%Java% or content like'%Java'.  この時、copyFieldは役に立ちます。新しいフィールドを定義して、titleとcontentをこの新しいフィールドにコピーします。インデックスを作る時、直接にこの新しいフィールドから検索します。これで目的地に着きます。 これはcopyFieldの典型的な応用シーンです。 
。注意:destが複数のsourceから構成される場合、multiValuedに指定する必要があります。
インターネットで例を探しました。
<schema name="eshequn.post.db_post.0" version="1.1"  
    xmlns:xi="http://www.w3.org/2001/XInclude">  
     <fields>  
        <!-- for title -->  
        <field name="t" type="text" indexed="true" stored="false" />  
        <!-- for abstract -->  
        <field name="a" type="text" indexed="true" stored="false" />  
        <!-- for title and abstract -->  
        <field name="ta" type="text" indexed="true" stored="false" multiValued="true"/>  
    </fields>  
    <copyField source="t" dest="ta" />  
    <copyField source="a" dest="ta" />  
</schema>  
 
 
Dynamic Field:
   
ダイナミックフィールド(Dynamic fields)は、schemaにおいて明示的に定義されたフィールドがないことを可能にする。これはいくつかのフィールドの定義を忘れた時に役に立ちます。動的フィールドは、システムをより柔軟にし、汎用性をより強くすることができる。
ダイナミックフィールドは従来のフィールドと同様で、名前にはワイルドカードが含まれているほか、索引ドキュメントでは従来のフィールドにマッチしていない場合はダイナミックフィールドにマッチします。
schemaの中で一つの名前が定義されていると仮定します。iのダイナミックフィールドで、索引を作るならコストゲといいます。iのフィールドですが、schemaにはcot_は存在しません。iのフィールドは、このようにcot_i を**_にインデックスしますiフィールドにあります。
ダイナミックフィールドもschema.xmlファイルで定義されています。他のフィールドと同様に名詞、フィールドタイプ、属性もあります。
1<dynamicField name="*_i" type="sint" indexed="true" stored="true"/>schema.xmlでは、拡張のためのいくつかの基本的なダイナミックフィールドを定義することを推奨します。