Confluence Cloud で検索結果を更新順やタイトル順など、任意の条件でソートする方法です。
Advanced Search
Confluenceの右上の検索窓をクリックすると、下に「Confluence の高度な検索」リンクが表示され、リンクをクリックすると、Advanced Searchのページに遷移し、より高度な検索ができます。
検索結果のソートは、このAdvanced Searchページで行います。
CQLを使う
Confluenceのコンテンツ検索APIでは、検索条件の指定方法として、CQLというSQL風の言語が用意されています。
実はAdvanced Searchページでも、CQLをパラメータとして渡して検索することができます。
CQLではソート指定ができるので、Advanced SearchページでCQLを使って検索することにより、検索結果のソートを行います。
手順
- Advanced SearchページのURLに、
cql
パラメータを付けて、URLエンコードしたCQL文を値として渡す
これだけです。
例
ユーザー「A」と「B」が投稿したブログで、「test」を含むものを、更新降順で表示する。
CQL文は下記になります。
CQL
( creator.fullname ~ "A" OR creator.fullname ~ "B" ) and type=blogpost and text ~ "test" order by lastmodified desc
URLエンコードはブラウザのJavaScriptで行います。
F12でコンソールを開いて、下記JavaScriptを貼り付けて実行すると、CQLをURLエンコードして、Advanced Searchに渡したページが開き、ソートされた検索結果が得られます。
JavaScript
const cqlPlain = ` ( creator.fullname ~ "A" OR creator.fullname ~ "B" ) and type=blogpost and text ~ "test" order by lastmodified desc `; const cqlEncoded = encodeURI(cqlPlain); const url = `https://[example].atlassian.net/wiki/search?cql=${cqlEncoded}`; window.open(url);
感想など
使い勝手はいまいちなのですが、CQL構文がフルに使えるので、色々凝った検索ができます。
CQLが使えるマクロがあるので、それが使えるのならばそっちの方が手っ取り早いです。
元々APIでは機能として提供されているので、Advanced Searchの画面で直接CQL文が入力できるようになるといいですね。