Bloggerにはラベルでの検索機能があって、単一のラベル指定の他、複数でのラベルも指定できるので、うまく使えばカテゴリーみたいに仕分けできたりするのかなぁと思ったりします。
はじめに、やりたいことは『2つのラベルを指定して、1つは含まれるラベル、1つはそこから除外するラベルを指定し、結果を日付の降順で出力』 というもの。
手っ取り早くBloggerから辿れるGoogleさんの解説だと
Blogger で検索結果を絞り込んで表示する 結構色々な検索式が用意されているので出来そうな感触を得ました。
ところが試しに「投稿」ビューでやってみると
◆この指定はOK でした。(sort指定 ラベルを2つ指定)
◆2つめのラベルを除外 (-を付与) しようと指定しても機能せず
(labelの前に - 付けたりとか色々やってもダメだった)
同じ事を外部からのURL参照でやろうとすると
◆検索結果は0件となりました (文字列などエスケープ処理はWEBブラウザがやってます)
◆ラベル指定を1つにしても全くダメで、どうやら外部からの q= 指定では sort: の機能が無いのか、検索文字列として扱われているようでした。
よく分からないので色々と試してみたら
以下の指定だとうまく動いている様子。/label/での指定(AND指定)
https://[ブログ].blogspot.com/search/label/[ラベル名1]+[ラベル名2]
q= での指定(AND指定)
http://[ブログ].blogspot.com/search/?q=label:[ラベル名1]+label:[ラベル名2]
q= での指定(OR指定)
http://[ブログ].blogspot.com/search/?q=label:[ラベル名1]|label:[ラベル名2]
q= での指定(特定のラベルを除外指定)
http://[ブログ].blogspot.com/search/?q=label:[ラベル名1]+-label:[ラベル名2]
/label/での指定では除外指定の (-) を接頭辞として付けてもpath名の一部として解釈されるようで(そりゃそうだ~)AND条件としての指定しか無理ですね。q= 指定で、なんとか目的とする検索結果に近づけました。(1のラベルを含んで2のラベルは含まず)
ところが検索結果の出力が日付順不同となってしまいます。「投稿」ビューで機能していた sort: の項目は効かない様子なので、どうしたら出来るのかとあちこち見て回って解決しました~。別のクエリーキーで "by-date" を付加すればいいとのこと
つまるところ私がやりたいことの書式は、
http://[ブログ].blogspot.com/search/?q=label:[ラベル名1]+-label:[ラベル名2]&by-date=true
複数ラベルでの除外方法がわからず、また、当然のように日付で並んで欲しかったので、大変助かりました!ありがとうございました!
返信削除