Подтвердить что ты не робот

Boolean НЕ в запросе solr

Как выбрать/удалить все документы из Solr с помощью логического понятия NOT?

то есть. Как удалить все документы из Solr, который id не запускается с A59?

4b9b3361

Ответ 1

Используйте '-' для обозначения NOT.

Например, для запроса документов с идентификатором, не начинающимся с A59, запрос будет выглядеть следующим образом: -id:A59*, то есть: /solr/select/?q=-id:A59*

Чтобы удалить по запросу, отправьте запрос в сообщении об удалении обработчику обновления, как указано здесь.

EDIT: NOT (все прописные буквы) также можно использовать как оператор

Ответ 2

Восклицание работает и для NOT, поэтому:

/solr/select/?q=!id:A59*

должен работать в приведенном выше случае.

Ответ 3

Я не считаю, что работает отрицательное удаление по запросу. См. Этот билет Джиры: https://issues.apache.org/jira/browse/SOLR-381

Они говорят, что в префиксе есть обходной путь: a, но мне не повезло с этим.

Это не работает (то же самое с использованием NOT) java -Ddata = args -jar/opt/solr/example/exampledocs/post.jar "-userid: *" java -jar/opt/solr/example/exampledocs/post.jar *.xml

Добавление в a: дает синтаксическую ошибку (то же самое с использованием NOT) java -Ddata = args -jar/opt/solr/example/exampledocs/post.jar ": -userid: *" java -jar/opt/solr/example/exampledocs/post.jar *.xml

SimplePostTool: версия 1.4 SimplePostTool: POSTing args http://localhost:8983/solr/update.. SimplePostTool: FATAL: Solr вернула ошибку # 400 Ошибка при анализе запроса Lucene SimplePostTool: версия 1.4

Ответ 4

перед удалением, пожалуйста, убедитесь, что идентификаторы, которые вы имеете в виду, являются строкой и никоим образом не будут образованы с помощью двух слагаемых. То, как я это сделаю, - это прочитать данные из solr из script и выполнить исключительное удаление или в пакетах, поскольку он обеспечивает лучший контроль и проверку над каждым идентификатором, что снижает риск неправильного удаления следовательно 1 прочитайте данные из solr из script, используя /Solr/ выбрать/д = ID: A59 *

2 проверить и проверить идентификаторы

3 удаляют их по одному или в группе из 10 идентификаторов одновременно

Привет

Раджат

Ответ 5

Как Mauricio заявил:

Используйте символ -, чтобы указать, что вы хотите исключить в своем запросе. Следующие два запроса удаляют все документы, кроме тех, которые начинаются с A59.

GET http://<url>/solr/<core>/update?stream.body=<delete><query>-id:A59*</query></delete>
GET http://<url>/solr/<core>/update?stream.body=<commit/>

В первой строке выполняется операция удаления. Вторая строка выполняет фиксацию.

Ответ 6

Использование символа-символа перед файлами означает, что исключить это конкретное значение. Это даст результат как НЕ равно

Ниже приведен пример строки запроса url, где. Я сохранил " & fq = -HQ_City_Code: MEL",

Он пропустит весь результат, имеющий HQ_City_Code значение MEL.

http://localhost:8983/solr/HQ_SOLR_Hotels/select?q=*:*&fq=HQ_National_Code:TH&fq=HQ_TYPE:hotel_EN&fq=HQ_Country_Code:AU&**fq=-HQ_City_Code:MEL**&wt=json&indent=true