Обновить поле документа с помощью solrj - PullRequest
0 голосов
/ 23 октября 2011

Я хочу отредактировать документ, поданный в solr, например, отредактировать имя автора, поэтому я использую следующий код в solrj:

params.set("literal.author","anaconda")

, но автор multivalued = "true" в схеме и из-зачто «anaconde» не заменяет его предыдущим именем и добавляет в конец имя автора, также, если я опускаю многозначное поле или устанавливаю его в false, исключение неправильного запроса происходит при повторной индексации файла с новым полем автора, как это сделать?я решить эту проблему и удалить или изменить предыдущее поле документа в solrj?или это какой-либо конфиг, я скучаю по схеме?спасибо

Ответы [ 5 ]

4 голосов
/ 24 октября 2011

Единственный известный мне вариант - это запросить полный документ (все поля, использующие параметр &fl=*) в локальную конструкцию с помощью solrj, обновить соответствующие поля и отправить весь документ обратно в Solr.

2 голосов
/ 05 января 2013

Этот пост должен быть правильным ответом на ваш вопрос (если вы используете SOLR 4.x)

2 голосов
/ 23 октября 2011

Нет, нет способа обновить определенное поле для документа в Solr , ни через какой-либо из его клиентских API.

РЕДАКТИРОВАТЬ: - В Solr 4.0 возможно частичное обновлениедокументы с определенными полями.

1 голос
/ 10 августа 2012

Для Solr 4.0 вы можете обновить одно поле в документе, но эта версия - ALPHA, если вас это беспокоит.

Но для обновления это возможно только для CURL. Думаю, я не нашел способа обновить отдельное поле в документе на стороне java с помощью solrj.

0 голосов
/ 07 августа 2012

У вас есть два варианта:

Как указано в других ответах, вы можете запросить исходный документ, обновить поле и затем повторно сохранить, что заменит исходный документ новыми значениями.

Другой вариант - установить ночную сборку Solr, где Йоник добавил патч для обновляемых документов.Вы должны следить за https://issues.apache.org/jira/browse/SOLR-139, так как этот патч довольно новый и все еще над ним работает.

...