Вы можете настроить динамические поля в 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
для каждого типа данных, который у вас может быть.
Тогда вот и все. Нет необходимости определять ваши конкретные поля, просто используйте суффиксы, которые вы настроили. Так, например, если вы использовали поля выше, вы можете сделать вставку с:
category_s = 'realty'
bedrooms_i = 4
Или вы можете сделать вставку с:
category_s = 'shirts'
size_s = 'M'