使用PHP中的标记从Evernote API检索笔记

时间:2014-11-17 16:20:56

标签: php api evernote

我正在使用Evernote的PHP SDK,我需要检索已标记的笔记列表。 当我按关键字或笔记本giud过滤时,它可以工作,但是一旦我设置了tagGuids,我就会得到空列表。

以下是示例代码:

$noteFilter=new EDAM\NoteStore\NoteFilter();

#For the sake of this example, I'm just getting all existing tags
#and adding them to filter so it should:
$tags=$noteStore->listTags($token);
$noteFilter->tagGuids=Array();
foreach($tags as $tag){
    $noteFilter->tagGuids[]=$tag->guid;
}

$notes=$noteStore->findNotes($token,$noteFilter,0,20);

我有标签说明。但这就是我得到的结果,一个空列表:

EDAM\NoteStore\NoteList Object
(
    [startIndex] => 0
    [totalNotes] => 0
    [notes] => Array
        (
        )

    [stoppedWords] => 
    [searchedWords] => 
    [updateCount] => 139
)

1 个答案:

答案 0 :(得分:1)

实际上,您无法进行此类搜索。使用tagGuids属性 - 比如说 - 2个标签将导致搜索包含这两个标签同时的注释。 它是一个' AND'搜索,而不是' OR'搜索范围。

一种选择是进行多次搜索,每次搜索都有一个标签并合并结果...... 不是最佳,但我担心它是你唯一的解决方案。

您可以在此处找到一些帮助:https://dev.evernote.com/doc/articles/search_grammar.php

顺便说一句,findNotes方法已被弃用。您应该使用findNotesMetadata方法:

$resultSpec = new \EDAM\NoteStore\NotesMetadataResultSpec();
$resultSpec->includeTitle;
$resultSpec->includeTagGuids;

$notes=$noteStore->findNotesMetadata($authToken,$noteFilter,0,20, $resultSpec);