Календарь 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');

Тестировать.

Другие вопросы по тегам