Удаление индекса из Solr с использованием solrj в качестве клиента - PullRequest
9 голосов
/ 17 апреля 2010

Я использую solrj в качестве клиента для индексации документов на сервере solr.

У меня проблемы при удалении индексов по id с сервера solr. Я использую следующий код для удаления индексов:

server.deleteById("id:20");
server.commit(true,true);

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

Спасибо!

Ответы [ 4 ]

17 голосов
/ 02 мая 2010

Когда вы вызываете deleteById, просто используйте идентификатор без синтаксиса запроса:

server.deleteById("20");
server.commit();
1 голос
/ 28 января 2011

После удаления документа зафиксируйте сервер и добавьте следующие строки. После строки коммита сервера.

  UpdateRequest req = new UpdateRequest();
  req.setAction( UpdateRequest.ACTION.COMMIT, false, false );
  req.add( docs );
  UpdateResponse rsp = req.process( server );
0 голосов
/ 18 августа 2016

Используйте метод deleteByQuery () , чтобы удалить документы, соответствующие запросу:

server.deleteByQuery("id:20");
server.commit();
0 голосов
/ 23 марта 2015

Таким образом, deleteById будет работать, только если вы формируете свой ключ, используя только один атрибут. Итак, у меня был случай, когда идентификатор был комбинацией нескольких атрибутов, таких как employeeId + deptId. Но моя таблица имела employeeId & deptId как отдельные столбцы, а также индексы, созданные на ней. Поэтому, когда я хотел удалить запись, у меня был только employeeId, а не deptId. Я использовал команду curl, чтобы удалить, где вы можете указать столбец и его значение, и он удалит всю запись.

например. curl http://localhost:8983/solr/update --data ': ' -H 'Тип содержимого: text / xml; кодировка = UTF-8'

...