#solr #solr-schema
#solr #solr-schema
Вопрос:
У меня есть эти поля в моей схеме solr :
<fields>
<field name="Id" type="string" indexed="true" stored="true" multiValued="false" required="true" />
<field name="IdCategory" type="string" indexed="true" stored="true" multiValued="false" required="true" />
<field name="Rank" type="long" indexed="true" stored="true" multiValued="false" required="true" />
<field name="TypeRank" type="string" indexed="true" stored="true" multiValued="false" required="false" default="category" />
<field name="_version_" type="long" indexed="true" stored="true"/>
</fields>
Могу ли я использовать 2 или 3 поля в качестве уникальных ключей вместо одного?
Когда я пытаюсь :
<uniqueKey>(Id,IdCategory,Rank,TypeRank)</uniqueKey>
Я получаю следующую ошибку :
org.apache.solr.common.Исключение SolrException:org.apache.solr.common.Исключение SolrException: ошибка синтаксического анализа схемы: неизвестное поле ‘(Id, idCategory, Rank, TypeRank)’. Файл схемы /var/solr/Rank/schema.xml
Ответ №1:
Вы не можете использовать 2 или 3 (или 4) поля в уникальном ключе так, как вы пытаетесь это сделать. Он должен указывать на одно строковое поле. Вы должны быть в состоянии сгенерировать объединенное поле значений, которые вы хотите, в одну уникальную строку перед индексацией.
Комментарии:
1. У меня это не сработало. Я получаю сообщение об ошибке
uniqueKey field can not be the dest of a copyField
2. Я думаю, это было исправлено в версии 4.0? issues.apache.org/jira/browse/SOLR-2796
3. Это не было «исправлено» в 4.0 — возможность сделать это была удалена. Двигаясь вперед, вы должны использовать updateRequestProcessorChain в вашем solrconfig.xml wiki.apache.org/solr/Deduplication
4. ах, имеет смысл, что это было бы сложно с разделением на uniquekey в облаке. Я генерирую значение перед отправкой в solr, поэтому еще не сталкивался с этим.