3

Solrに製品属性を保存するのを手伝ってくれる人がいるかどうか疑問に思っていました. 私が抱えている問題は、製品属性が製品カテゴリによって異なることです. これまでに理解したところでは、スキーマ内のフィールドをリストする必要があります。属性の数はかなり多く、常に変化しています - 皆さんは何を提案しますか?

たとえば、シャツカテゴリの商品にはサイズ属性があり、不動産カテゴリの商品にはベッドルーム属性がある場合があります。

(私は現在、MySQL データを Solr に常にインポートし、Solr を主にファセット検索に使用することを計画しています)

4

1 に答える 1

8

solr で動的フィールドを設定できます。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、これらのフィールドはテキスト フィールドとして扱われ、インデックスが付けられて保存され、(配列ではなく) 単一の値として扱われます。

動的フィールド名はいくつでも設定でき、使用する名前に意味や規則はありません。dynamicField使用するデータ型ごとに1 つの定義を設定するだけです。

それでは、それだけです。特定のフィールドを定義する必要はありません。設定したサフィックスを使用するだけです。たとえば、上記のフィールドを使用した場合、次のように挿入できます。

category_s = 'realty'
bedrooms_i = 4

または、次のように挿入できます。

category_s = 'shirts'
size_s = 'M'
于 2011-01-18T22:42:35.373 に答える