Календарь Zend Gdata: setQuery с точным соответствием фразы?
У меня проблемы с использованием Zend_Gdata_Calendar
вернуть подмножество событий Календаря Google с точным соответствием фразы.
Справочник дляZend_Gdata_Books
, в setQuery()
раздел предполагает, что это должно быть возможно с Zend:
Обратите внимание, что любые пробелы, кавычки или другие знаки пунктуации в значении параметра должны быть экранированы URL (используйте плюс (+) для пробела). Чтобы найти точную фразу, заключите фразу в кавычки. Например, для поиска книг, соответствующих фразе "самолет-шпион", установите
q
параметр для%22spy+plane%22
,
Насколько я могу сказать, Zend_Gdata_Books
а также Zend_Gdata_Calendar
продлить то же самое setQuery()
функция, так что я думаю, что они эквивалентны в конце Zend вещей.
Что касается Google, ссылка на параметры запроса календаря говорит, что Calendar API поддерживает стандартные параметры запроса Data API, что, в свою очередь, говорит о полнотекстовой строке запроса. q
поддерживает регистрозависимый точный поиск фраз, так же как Zend_Gdata_Books
указывает на то.
Я пробовал все эти способы:
$gCal = new Zend_Gdata_Calendar();
$query = $gCal->newEventQuery();
$query->setQuery("%22event+text%22"); //no results
$query->setQuery("%22event%20text%22"); //no results
$query->setQuery("\"event text\""); //too many results
$query->setQuery('"event text"'); //too many results
$query->setQuery("event text"); //too many results
Я понимаю, что первые два не сработали, потому что строка дважды кодируется URL. В последних случаях я получаю событие, которое хочу, а также события, в том числе "событие" или "текст", которые мне не нужны.
Может быть, Google реализовал полнотекстовый запрос по-другому для API Календаря? Какие глупости я могу сделать, чтобы сломать это?
1 ответ
Похоже, вы хотите попробовать это с $query->setQuery('"event text"');
который дает строку запроса Query string(19) "?q=%22event+text%22"
где $query->setQuery("event text");
дает строку запроса Query string(13) "?q=event+text"
Я использовал:
$gCal = new Zend_Gdata_Calendar();
$query = $gCal->newEventQuery();
$query->setQuery("event text");
Zend_Debug::dump($query->getQueryString(), 'Query');
Тестировать.