Отрицательный выбор не может быть удален из индекса Solr - PullRequest
0 голосов
/ 04 марта 2011

У меня есть документы в индексе solr, у которых нет поля даты. Я хочу удалить все такие документы. Следующее не работает, хотя

дата: [* TO *]

создает документы, которые я хочу сохранить, а

-дата: [* TO *]

создает документы, которые я хочу удалить.
/usr/bin/curl http:// localhost:8080/solr/update -H "Content-Type: text/xml" --data-binary '<delete><query>-date:[* TO *]</query></delete>' /usr/bin/curl http:// localhost:8080/solr/update -H "Content-Type: text/xml" --data-binary '<commit/>' /usr/bin/curl http:// localhost:8080/solr/update -H "Content-Type: text/xml" --data-binary '<optimize/>'

Результат:

<?xml version="1.0" encoding="UTF-8"?> <response> <lst name="responseHeader"> <int name="status">0</int> <int name="QTime">16</int> </lst></response> <?xml version="1.0" encoding="UTF-8"?><response><lst name="responseHeader"><int name="status">0</int><int name="QTime">140</int></lst></response> <?xml version="1.0" encoding="UTF-8"?><response> <lst name="responseHeader"><int name="status">0</int><int name="QTime">41</int></lst> </response>

Примечание. Дата удаления: [* TO *] документы работают хорошо.

Ответы [ 2 ]

1 голос
/ 23 декабря 2011
/update?stream.body=<delete><query>*:* -(date:[* TO *])</query></delete>&commit=true

Редактировать: кто-то отрицал мой ответ, потому что я его не объяснил.Вот оно:

  1. *:* означает все документы
  2. date:[* TO *] означает все документы с полем даты
  3. *:* -(date:[* TO *]) все документы, которые неt имеет поле даты
  4. commit=true означает зафиксировать изменение в индексе

Почему <delete><query>-date:[* TO *]</query></delete> не работает?Честно говоря, я не уверен.Синтаксис для обновления не совпадает с синтаксисом для запросов.Я опубликую больше, если узнаю больше в будущем.

1 голос
/ 22 июня 2011

У меня была такая же проблема.Решением было добавить дополнительное условие, которое ссылается на идентификатор.Так что у меня в итоге было

<delete><query>-date:[* TO *] AND id:(*)</query></delete>

Как видите, идентификатор может иметь любое значение.

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