Zend Gdata日历:setQuery与精确短语匹配?

时间:2012-08-18 22:04:25

标签: php zend-framework google-calendar-api google-data-api zend-gdata

我无法使用Zend_Gdata_Calendar返回精确词组匹配的Google日历活动子集。

setQuery()部分中的reference guide for Zend_Gdata_Books表明Zend应该可以实现这一点:

  

请注意,参数值中的任何空格,引号或其他标点都必须进行URL转义(对空格使用加号(+))。要搜索确切的短语,请将短语括在引号中。例如,要搜索与“间谍飞机”短语匹配的图书,请将q参数设置为%22spy+plane%22

据我所知,Zend_Gdata_BooksZend_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实现了不同的全文查询?我可以做些什么愚蠢的事情来打破它?

1 个答案:

答案 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');

进行测试。