Удаление индекса из SOLR используя SolRJ в качестве клиента

StackOverflow https://stackoverflow.com/questions/2657409

  •  27-09-2019
  •  | 
  •  

Вопрос

Я использую 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 '

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top