2016-08-14 7 views
2

私はと協力しています。solr5.5.1spring-data-solr 1.4.2.RELEASE私は春のデータsolrを私の仕事のプロジェクトで設定し、うまく働いています。しかし、モデルクラスを使用してsolrにデータを挿入すると、管理対象スキーマファイルがモデルクラスのrelaventフィールドで自動的に更新されます。このモデルでは、私は多値型を使用していませんが、spring-data-solrは、マネージド・スキーマ・ファイルを複数値属性として更新します。なぜそれが起こったのですか?モデルクラスの サンプルフィールド宣言Springデータsolrは常に複数値のフィールドを作成します

@SolrDocument(solrCoreName = "car") 
public class CarModel{ 

    @Id 
    @Indexed(type = "string") 
    private String id; 

    @Indexed(type = "string") 
    private String condition; 


    @Indexed(type = "string") 
    private String name; 

    //getters n setters 
} 

私はSolrCrudRepositoryて、このクラスのオブジェクトを保存するとき。次に、管理スキーマがこのように更新されます。

<field name="condition" type="strings"/> 
<field name="id" type="string" multiValued="false" indexed="true" required="true" stored="true"/> 
<field name="name" type="strings"/> 

フィールドは複数値です。ここで何が起きていますか?これをどのように解決できますか?

答えて

0

私は同じ問題を抱えていましたが、私は以下の実装方法を試しました。 Spring Data Solr: how to set multiValue to false when declaring a field

また、私はsolrconfig.xmlでのデフォルトの実装を変更しました。私はすべてのllstのためのtlongs .. etcを持っています。

<processor class="solr.AddSchemaFieldsUpdateProcessorFactory"> 
    <str name="defaultFieldType">string</str> 
    <lst name="typeMapping"> 
    <str name="valueClass">java.lang.Boolean</str> 
    <str name="fieldType">boolean</str> 
    </lst> 
    <lst name="typeMapping"> 
    <str name="valueClass">java.util.Date</str> 
    <str name="fieldType">tdate</str> 
    </lst> 
    <lst name="typeMapping"> 
    <str name="valueClass">java.lang.Long</str> 
    <str name="valueClass">java.lang.Integer</str> 
    <str name="fieldType">tlong</str> 
    </lst> 
    <lst name="typeMapping"> 
    <str name="valueClass">java.lang.Number</str> 
    <str name="fieldType">tdouble</str> 
    </lst> 
</processor> 

将来的に他の問題が発生するかどうかは不明です。今、私はフィールドが単一の値を受け入れているのを見ることができます。

0

私はSpringがスキーマの作成を管理しているとは思いません。すべてのフィールドがすでに定義されているものとみなします。そのため、スキーマレスモードを使用してスキーマの作成を開始します。これはsolrconfig.xmlで定義されています。

スキームレスモードでは、multiValuedフィールドは、値が時間とともに単一値または複数値になるかどうかがわからないため作成されます。それで、それは注意の側で間違っています。

スキーマファイルを編集して再読み込みするか、またはインターフェイスを提供する新しい管理UIを使用して明示的に必要なスキーマを作成することをお勧めします。

または、スキルレス一致の定義を変更して単一項目を作成できますが、そのうちの1つが複数の値を持つ場合は失敗します。パターンを使用して、それらのうちどれを特異値にするべきか、複数値にするべきかを指定しない限り。しかしそれまでには、とにかく直接宣言することもあります。

+0

yh私はあなたに同意しますが、spring-data-solrを使用するとスキーマ用のフィールドが作成されます。 @Indexedアノテーションを使用して、ソルフィールドのデータ型を指定できます。それは動作しません。それはここの問題です。それでも私はスキーマファイルを手動で編集しています。 –

関連する問題