Evernote の検索構文

いや〜遅くなりましたが久しぶりの Evernote ネタ。

前回は

ノートの取得に関するサンプルを書きました。
今回はもう少し複雑なノートの検索について、Evernote に用意されている検索構文について、紹介していきます。

検索構文

Evernote には独自の検索構文が用意されており、それらを組み合わせて使うことで、より高度なノートの検索を行うことが出来ます。
検索構文については、本家のサイトにより詳細に書かれているので、詳しい解説はしません。
よく使うであろう検索構文について、軽く解説だけしておきます。


■notebook:[notebook name]
・ノートブックの名前を指定して検索します。
・この条件は、検索条件の先頭でなければいけません。

■any:[word]
・この式が条件の先頭にあった場合、これ以降の任意の検索項目のいずれかに一致するノートを対象とする

リテラル項目の一致
・大文字/小文字は区別されない
ワイルドカードは末尾しか有効にならない(e.g. Ever*)
・「-word」とした場合、否定を表す

■tag:[tag name]
・tag:cooking -> "cooking" というタグを含む任意のノートを対象とする
・tag:cook* -> "cook" で始まるタグを含む任意のノートを対象とする
・-tag:cook* -> "cook" で始まるタグを含まない任意のノートを対象とする
・tag:* -> 少なくとも 1 つのタグを含む任意のノートを対象とする
・-tag:* -> タグを含んでいない任意のノートを対象とする

■intitle:[literal]
・intitle:chicken -> "chicken" という単語をタイトルに含む任意のノートを対象とする
・-intitle:chicken -> "chicken" という単語をタイトルに含んでいない任意のノートを対象とする

■created:[datetime]
・created:20070704 -> 2007/07/04 以降に作成されたノートを対象とする
・created:20070704T090000 -> 2007/07/04 9:00 以降に作成されたノートを対象とする
・created:20070704T150000 -> 2007/07/04 15:00 以降に作成されたノートを対象とする
・-created:20070704 -> 2007/07/04 より前に作成されたノートを対象とする
・created:day-1 -> 昨日または今日作成されたノートを対象とする
・-created:day -> 今日より前に作成されたノートを対象とする
・created:day-1 -created:day -> 昨日作成されたノートを対象とする
・created:day-30 -> 過去30日以内に作成されたノートを対象とする
・created:week -> カレンダー上の今週中(日曜〜土曜)に作成されたノートを対象とする
・-created:month -> 今月より前に作成されたノートを対象とする
・created:year-1 -> 昨年または今年作成されたノートを対象とする

■updated:[datetime]
・フォーマットについては、上記 created の指定内容と同じ。

■resource:[MIME type string]
・resource:image/gif -> 少なくとも 1 つの image/gif リソースを含むノートを対象とする
・resource:audio/* -> 少なくとも 1 つの audio リソースを含むノートを対象とする
・-resource:image/* -> イメージを含まないノートを対象とする

■author:[string]
・author:robert* -> author 属性に "robert" を含むノートを対象とする
・-author:* -> author 属性が設定されていないノートを対象とする

■source:[string]
・source:web.clip -> Evernote Web Clipper を使用している Web ページからクリップしたノートを対象とする
・source:mail.clip -> ローカルなメールクライアントからクリップしたノートを対象とする

■日付および時刻引数
<現在日時が [2007年10月31日(日) 13:30:56] の場合>
・day -> 2007/10/31 00:00:00
・day-1 -> 2007/10/30 00:00:00
・day-14 -> 2007/10/17 00:00:00
・week -> 2007/10/28(日) 00:00:00(現在日時の週の頭の日曜)
・week-2 -> 2007/10/14(日) 00:00:00(現在日時の週の 2 週間前の日曜)
・month -> 2007/10/1 00:00:00(現在日時の月初)
・month-1 -> 2007/9/1 00:00:00(現在日時の前の月の月初)
・year -> 2007/1/1 00:00:00(現在日時の元旦)
・year-3 -> 2004/1/1 00:00:00(現在日時の 3 年前の元旦)

■組み合わせ条件
・chicken tag:cooking created:year
単語 "chicken" を含み、タグ "cooking" を持つノートのうち、今年作成されたものを対象とする
・any: "San Francisco" tag:SFO
単語 "San Francisco" をテキストに含んでいるか、またはタグ "SFO" を含んだノートを対象とする

こんな感じ

とま〜こんな感じで結構柔軟な検索条件を指定することが可能なんです。
あとはコードを見たほうが早いと思いますので、例のごとく GitHub にコードを晒しました。参考になれば幸いです。
evernote-api-example

もう

これで最後かな〜。ノートの登録とかは GitHub に上げてるコードを見てもらえれば分かるかな(不親切)。
何か要望があれば考えます〜。では〜( ^q^)ノ