2013-09-09 3 views
2

Я пытаюсь настроить Solr 4 для работы с UUID и до сих пор я неудачнаяНастройка Solr использовать UUID в качестве ключевого

От чтения документации я видел два различных способа настройки schema.xml для работы с UUID (оба не работают)

для обоих мне нужно написать

<fieldType name="uuid" class="solr.UUIDField" indexed="true" /> 

вариант 1: добавить:

<field name="id" type="uuid" indexed="true" stored="true" default="NEW" multiValued="false"/> 

и убедитесь, что для удаления линии

<uniqueKey>id</uniqueKey> 

варианта 2 надстройки:

<field name="id" type="uuid" indexed="true" stored="true" required="true" multiValued="false" /> 

Оба варианты не работает правильно и возвращающийся org.apache.solr.common.SolrException: орг. apache.solr.common.SolrException: ошибка инициализации QueryElevationComponent.

Я также попытался добавить строку в файл colrconfig.xml с конфигурацией:

<updateRequestProcessorChain name="uuid"> 
<processor class="solr.UUIDUpdateProcessorFactory"> 
    <str name="fieldName">uniqueKey</str> 
</processor>  
<processor class="solr.RunUpdateProcessorFactory" /> 
</updateRequestProcessorChain> 

Спасибо,

Шимон

+0

Работает ли ваша базовая настройка, не пытаясь изменить тип поля id? Ошибка QueryElevationComponent звучит так, как будто это может быть проблема с общей конфигурацией – Kieran

+0

да, это работает, при установке id в строку все хорошо –

+0

Возможный дубликат [Solr 4 - отсутствует требуемое поле: uuid] (http://stackoverflow.com/questions/ 16914324/solr-4-missing-required-field-uuid) –

ответ

0

Вы можете удалить компонент Query Elevation, если не используется Это.

QueryElevationComponent требует определения уникального ключа и должен быть строковым уникальным ключом с JIRA.

Однако он был исправлен с помощью альфа-версии Solr 4.0, поэтому это будет зависеть от версии Solr, которую вы используете.

Это ограничение: documented in the Solr wiki.

+0

Привет, Jayendra спасибо за ваш ответ. Я использую последнюю версию Solr 4.4.0. Кроме того, из того, что я понимаю в отношении QueryElevationComponent, я могу отключить его при запросе, но моя проблема в том, что когда я определяю идентификатор поля как uuid, ядро ​​не загружается. Во всяком случае, добавление поддержки UUId кажется мне основной операцией, которую я бы хотел добавить без удаления каких-либо компонентов. –

+0

вам нужно будет удалить компонент возвышения запроса, а как отключение его не будет работать, так как это зависит от уникального ключа. – Jayendra

5

После некоторой работы здесь решение:

В schema.xml, добавить (или изменить) поле поле

<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" /> 

В Solr конфигурации, обновить цепочку и добавить цепочку обработчиков (Пример: для/update/extract):

<updateRequestProcessorChain name="uuid"> 
    <processor class="solr.UUIDUpdateProcessorFactory"> 
    <str name="fieldName">id</str> 
    </processor> 
    <processor class="solr.RunUpdateProcessorFactory" /> 
</updateRequestProcessorChain>`   

<requestHandler name="/update/extract" 
       startup="lazy" 
       class="solr.extraction.ExtractingRequestHandler" > 
    <lst name="defaults"> 
    <str name="lowernames">true</str> 
    <str name="uprefix">ignored_</str> 
    <str name="captureAttr">true</str> 
    <str name="fmap.a">links</str> 
    <str name="fmap.div">ignored_</str> 
    <str name="update.chain">uuid</str> 
    </lst> 
</requestHandler>