2011-01-18 20 views
3

あなたがSolrに製品属性を格納するのを手伝ってくれるかどうか疑問に思っていました。私が持っている問題は、製品属性が製品カテゴリによって異なるということです。私がこれまで理解してきたことから、スキーマのフィールドをリストアップしなければならないでしょう。属性の数はかなり大きく、常に変化しています。あなたは何を提案していますか?例えばSolr - スキーマヘルプ(製品属性)

シャツカテゴリーの製品は、サイズ属性を持っているかもしれないが、不動産カテゴリ内の一つが寝室属性を持っているかもしれない持っています。

(私は現在、常にSolrのにMySQLのデータをインポートし、多面的な検索のために、ほとんどのSolrを使用する上で計画しています)

答えて

8

あなたはSolrの中dynamic fieldsを設定することができます。 schema.xmlでは、<fields>ブロックでは、あなたがこのようなダイナミックなフィールドの定義を設定することができます

<fields> 
    ... 

    <dynamicField name="*_t" type="text" indexed="true" stored="true" multiValued="false"/> 
    <dynamicField name="*_s" type="string" indexed="true" stored="true" multiValued="false"/> 
    <dynamicField name="*_sa" type="string" indexed="true" stored="true" multiValued="true" /> 
    <dynamicField name="*_d" type="date" indexed="true" stored="true" multiValued="false"/> 
    <dynamicField name="*_f" type="sfloat" indexed="true" stored="true" multiValued="false"/> 
    <dynamicField name="*_i" type="sint" indexed="true" stored="true" multiValued="false"/> 
    <dynamicField name="*_ia" type="sint" indexed="true" stored="true" multiValued="true" /> 
</fields> 

をしたい特定の設定が異なる場合がありますが、これは基本的な考え方です。

最初のdynamicFieldの定義を考えてみましょう。つまり、_tで終わるフィールドを動的に追加することができ、これらのフィールドはテキストフィールドとして扱われ、インデックスが付けられ、格納され、(配列ではなく)単一の値として扱われます。

動的フィールド名は必要な数だけ設定できます。使用する名前には意味や慣習がありません。あなたが持っているかもしれない各データタイプのために1つだけdynamicFieldの定義を設定してください。

それで、それです。特定のフィールドを定義する必要はなく、設定した接尾辞を使用してください。だから、あなたは上記のフィールドを使用している場合たとえば、あなたが挿入を行うことができます:

category_s = 'realty' 
bedrooms_i = 4 

それともあなたが挿入を行うことができます:

category_s = 'shirts' 
size_s = 'M' 
関連する問題