Удаление индекса из SOLR используя SolRJ в качестве клиента
Вопрос
Я использую Solrj как клиент для индексации документов на сервере Solr.
У меня проблемы с проблемой, удаляя индексы «ID» с сервера Solr. Я использую следующий код, чтобы удалить индексы:
server.deleteById("id:20");
server.commit(true,true);
После этого, когда я снова ищу документы, результат поиска также содержит вышеуказанный документ. Не знаю, что идет не так с этим кодом. Пожалуйста, помогите мне с проблемой.
Спасибо!
Решение
Когда вы называете DELETEBYIID, просто используйте идентификатор, без синтаксиса запроса:
server.deleteById("20");
server.commit();
Другие советы
После того, как вы удалите документ, совершите сервер и добавьте следующие строки. После конвейера сервера линии.
UpdateRequest req = new UpdateRequest();
req.setAction( UpdateRequest.ACTION.COMMIT, false, false );
req.add( docs );
UpdateResponse rsp = req.process( server );
Используйте метод DeltebyQuery () Чтобы удалить документы, соответствующие запросу:
server.deleteByQuery("id:20");
server.commit();
Таким образом, DELETEBYID будет работать, только если вы формируете свой ключ, используя только один атрибут. Итак, у меня есть случай, когда идентификатор был сочетанием нескольких атрибутов, таких как работоспособность C + DEPTID. Но мой стол имел WhiteeeeeD & DeptId как отдельные столбцы, а также созданные на нем индексы. Поэтому, когда я хотел удалить запись, у меня было только сотрудничество и не дептид. Я использовал команду curl, чтобы удалить, где вы можете указать столбец и его значение, и это удалит всю запись.
Например, завиток http: // localhost: 8983 / Solr / Обновление --данные ':'-H' типа содержимого: текст / XML; Charset = UTF-8 '