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'