#http #solr
#http #solr
Вопрос:
Я хочу иметь возможность запрашивать диапазон дат и времени в моем индексе solr. Через пользовательский интерфейс я могу ввести поисковый запрос следующим образом:
dateUTC:[2012-01-01T00:00:00Z TO 2013-01-01T00:00:00Z]
Который затем генерирует URL-адрес в браузере следующим образом:
http://localhost:8983/solr/core0/select/?q=dateUTC:[2012-01-01T00:00:00Z TO 2013-01-01T00:00:00Z]amp;version=2.2amp;start=0amp;rows=10amp;indent=on
Который затем показывает некоторые результаты в форматировании XML в моем браузере. (Обратите внимание, я использую сервер с версией 2.2 SOLR). Моя цель — в конечном итоге написать скрипт для извлечения этих данных, но, похоже, я не могу выполнить этот запрос через скрипт.
Мой файл test.bat выглядит примерно так:
curl "http://localhost:8983/solr/core0/select/?q=dateUTC:[2012-01-01T00:00:00Z TO 2013-01-01T00:00:00Z]amp;version=2.2amp;start=0amp;rows=10amp;indent=on" > test.xml
Однако, когда я смотрю на test.xml , результаты xml пусты. Я подозреваю, что это связано с неправильной интерпретацией некоторых символов, потому что более простой запрос «foobar» работает нормально и генерирует файл xml, который я ищу:
curl http://localhost:8983/solr/core0/select/?q=foobaramp;version=2.2amp;start=0amp;rows=10amp;indent=on > testSuccess.xml
Любая помощь будет оценена.
Комментарии:
1. Можете ли вы попробовать заменить foobar в вашем последнем примере запросом из вашего первого примера и заключить URL-адрес в двойные кавычки (поскольку теперь он содержит пробелы)? Таким образом, вы позволяете curl позаботиться о кодировке URL.
2. Я смог это выяснить. См. Ответ
Ответ №1:
Да, проблема была очень простой. % — это специальные символы в командной строке, поэтому вы также должны правильно их экранировать (просто введите %% вместо%). Добавив дополнительный символ% везде, запрос теперь сработал!
curl "http://localhost:8983/solr/core0/select/?q=dateUTC%:%[2012-01-01T00%:00%:00Z TO 2013-01-01T00%:00%:00Z%]amp;version=2.2amp;start=0amp;rows=10amp;indent=on" > test.xml