v2探索APIは、
Confluence内の内容を探索する速い方法を提供します。
私たちは、可能なところですべてのplugin著者がこのAPIに変わるように高く勧めます。
このAPIを使用する方法を説明するために、私たちは、基礎的な探索のための単純なコード断片を含みました。
・key DOCのスペース内のadministrationとラベルされたコンテンツについて全て調べる.
・最初に表示された最新の修正済の内容を備えたこれらの結果をソートします。
・結果の数の上限を10とします。
コードの解析
1行目
com.atlassian.confluence.search.v2.SearchQuery
com.atlassian.confluence.search.v2.query.BooleanQuery
composeAndQuery(SearchQuery searchQueryOne,SearchQuery searchQueryTwo)
2つのクエリーのANDクエリーを構築する。戻り値の型はSearchQuery
com.atlassian.confluence.search.v2.query.LabelQuery
LabelQuery(String label)
ラベルの文字列表現からのLabelQueryを構築する。型はSearchQuery
com.atlassian.confluence.search.v2.query.InSpaceQuery
いくつかのスペースのセット内に生じるコンテンツを探索する。
InSpaceKey(String spaceKey)
与えられたキーを備えた一つのスペース内の内容を探索する。型はSearchQuery
ということで、1行目は"DOC"スペース内に生じるコンテンツかつ"administration"ラベルを持つクエリーの集合をqueryとして定義しているということになります。
**クエリーについて
データベース管理システムに対する処理要求(問い合わせ)を文字列として表したもの。
データの検索や更新、削除などの命令をシステムに発行するのに使われる。
検索クエリーでは、対象となるテーブルやデータの抽出条件、並べ方などを指定する。
一度作成したクエリーは保存しておいて何度も使うことができるようになっているものが多い。
リレーショナルデータベースでは、クエリーの記述にSQLという言語を使うことがほとんどである。
2行目
com.atlassian.confluence.search.v2.SearchSort
検索結果をソートし、それらを探索する順序を表わします。
com.atlassian.confluence.search.v2.sort.ModifiedSort
最後に修正された時間までに検索結果を探索する。DESCENDINGは"下る"の意味を持つ。
2行目は、ソートの順序を定義しているものと思われる。
3行目
com.atlassian.confluence.search.v2.SearchFilter
検索時間(ポスト結果ではない)中に検索索引に対して行なわれるフィルタ。
- SiteSearchPermissionSearchFilter
com.atlassian.confluence.search.v2.searchfilter.SiteSearchPermissionsSearchFilter
このフィルタは、カレント・ユーザーがスーパーユーザーか、Confluenceが共有されるモードであるかどうかに依存して、許可するフィルタを選ぶことに関与する意思決定をカプセルに入れます。
4行目
com.atlassian.confluence.search.v2.ResultFilter
それらが探索サブシステムから返される前に検索結果をろ過するある方法を表す。
com.atlassian.confluence.search.v2.filter.SubsetResultFilter
ここで、結果の表示数を規定していると思われる。
5行目
com.atlassian.confluence.search.v2.Search
Search(SearchQuery query, SearchSort sort, SearchFilter searchFilter, ResultFilter resultFilter)
ここで実際に探索方法を定義している。引数として、1行目から4行目で定義したものを使用している。
6行目
com.atlassian.confluence.search.v2.SearchResults
"SearchManager"の記述ミスか、事前に"SearchManerger searchManager"の記述がないと意味が通らない。
com.atlassian.confluence.search.v2.SearchManager
SearchResults search(ISearch search) throws InvalidSearchException
与えられた規準で探索を行う。この場合はsearchを引数にとっているので、先程定義した探索方法を使って実際に探索をするということだと思われる。
このマネージャーが指定された探索を翻訳せず行なうことができる場合。
これが生じる場合、クライアントは探索を直ちに廃棄するべきである。
com.confluence.search.v2.luceneSearchResults
追加コメント:
・探索にcom.atlassian.confluence.search.v2.searchfilter.SiteSearchPermissionsSearchFilterを含むことを確認してください。
これは、あなたのために許可チェックおよびコンテンツ・フィルタリングを自動的に扱う、束ねられたフィルタです。
・返された結果の数はcom.atlassian.confluence.search.v2.filter.SubsetResultFilterの使用で制限されています。
このクラスは、検索時間中に効率的に検索結果をろ過します。
・その探索はsearchManager.search(search)を使用して実行されます。
このinvocationは、あなたのインデックスからのデータで占められた検索結果を返します。
・繰り返すために、返された検索結果に関して、searchResults.iterator()を使用して、searchResults.getAll()を備えた検索結果のリストに参照を得ることができるか、あるいはこのリストにiteratorを得ることができます。
・title、bodyおよびspace keyのような探索結果に関する共通の情報は、getDisplayTitle()、getContent()およびgetSpaceKey()をそれぞれ使用して、探索結果から抽出することができます。
より多くのアクセス機構のために、com.atlassian.confluence.search.v2.SearchResultのためのAPIドキュメンテーションを見ます。
・このinvocationはどんな検索結果も構築しにデータベースに行きません。
探索によって返されるためにデータベースからのcom.atlassian.bonnie.Searchableなオブジェクトを望む場合は、searchManager.searchEntities(探索)を代わりに呼んでください。
・下記のいずれかの場合に、例外com.atlassian.confluence.search.v2.InvalidSearchExceptionは投げられます:
・エラーが対応するLucene探索オブジェクトにv2探索オブジェクトをmappingしている。
・mapperが、探索オブジェクトのうちの1つのmapを分かりませんでした。
(この探索のmappingの原因であるmapper pluginがインストール解除されたかもしれません。)
上に記述されるように、例外が投げられる場合、単に探索を廃棄するべきです。
関連トピック
Remote API Specification
API documentation
最終更新:2012年06月19日 03:58