2013-05-05 3 views
0

Было несколько вопросов по аналогичной теме, но их разрешения, похоже, не соответствуют моему делу.Ошибка Solr с ошибкой «missing required unique key id»

Env: Solr4.2.1, Tomcat 7

Я пытаюсь индексировать данные общественные MovieLens, и начал (как и все) с 'например' ядра. Я удалил некоторые поля из схемы не имеет отношения ко мне и добавил другие индекс MovieLens поля:

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

<!-- fields for u.data in the grouplens data --> 
<field name="user_number" type="string" indexed="true" stored="true" multiValued="false" /> 
<field name="item_number" type="text_general" indexed="true" stored="true"/> 
<field name="rating" type="int" indexed="true" stored="true" /> 
<field name="timestamp" type="date" indexed="true" stored="true"/> 
<!-- end of fields for u.data in the grouplens data --> 
<!-- fields for u.user in the grouplens data , userid is already specified above --> 
<field name="age" type="int" indexed="true" stored="true" /> 
<field name="gender" type="text_general" indexed="true" stored="true"/> 
<field name="occupation" type="text_general" indexed="true" stored="true"/> 
<field name="zipcode" type="text_general" indexed="true" stored="true"/> 
<!-- end of fields for u.user in the grouplens data --> 
... 
<uniqueKey>id</uniqueKey> 

Я добавляю все поля в моей Java индексаторе, включая поле, создаваемое «идентификатор», я также печать из каждого поля я добавляю, поэтому с выходом консоли ниже вы можете увидеть, что я на самом деле добавить поле «ID», наряду с другими ... Тем не менее, я получаю следующее сообщение об ошибке:

May 5, 2013 9:43:06 AM org.apache.solr.client.solrj.impl.HttpClientUtil createClient 
INFO: Creating new http client, config:maxConnections=128&maxConnectionsPerHost=32&followRedirects=false 
indexUserData() started for file: u.user 
indexUserData() processing line: 1|24|M|technician|85711 
adding field: [user_number, 1] 
adding field: [id, u_user_1] 
adding field: [age, 24] 
adding field: [gender, M] 
adding field: [occupation, technician] 
adding field: [zipcode, 85711] 
Exception in thread "main" org.apache.solr.common.SolrException: Document is missing mandatory uniqueKey field: id 
at org.apache.solr.client.solrj.impl.HttpSolrServer.request(HttpSolrServer.java:404) 

Любой идею что мне не хватает? Спасибо! Марина

ответ

0

У вас есть

<uniqueKey>id</uniqueKey> 

ниже вашего <fields> тегов в вашей схеме? Вам нужно указать solr в файле schema.xml, который будет вашим уникальным ключом.

+0

Да, извините, я не включил эту часть в фрагмент схемы. Я обновлю оригинальный вопрос. – Marina

0

Ничего страшного - это была очень неловкая ошибка ... У меня была петля над токенами при обработке каждой строки, и по ошибке у меня было утверждение создать новый SolrInputDocument() внутри цикла, а не снаружи, поэтому я был в основном создавая новый документ на поле .... Теперь все работает отлично!