我无法使用Zend_Gdata_Calendar
返回精确词组匹配的Google日历活动子集。
setQuery()
部分中的reference guide for Zend_Gdata_Books
表明Zend应该可以实现这一点:
请注意,参数值中的任何空格,引号或其他标点都必须进行URL转义(对空格使用加号(+))。要搜索确切的短语,请将短语括在引号中。例如,要搜索与“间谍飞机”短语匹配的图书,请将
q
参数设置为%22spy+plane%22
。
据我所知,Zend_Gdata_Books
和Zend_Gdata_Calendar
扩展了相同的setQuery()
函数,所以我认为它们在Zend结尾处是等价的。
对于Google,Calendar query parameters reference表示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是否为Calendar API实现了不同的全文查询?我可以做些什么愚蠢的事情来打破它?
答案 0 :(得分:0)
看起来你想用$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');
进行测试。