• 追加された行はこの色です。
  • 削除された行はこの色です。
RIGHT:&tag(検索,ToDo);
RIGHT:[[:t/検索]] [[:t/サブセットWiki]]

**検索結果でwikiを作りたい [#p1cbc358]
検索結果をwiki化できたら、wikiの全機能を検索に再利用できる。
検索結果からタグクラウドを作る、検索結果だけに限ったRSS生成、サイトマップ、イメージ一覧、…

一覧と集計。
特に一覧や集計と組み合わせて。


**実装に必要なもの [#w07f0277]
*** 実装に必要なもの [#w07f0277]
検索のメモ化と、検索過程でできたページの集合をページ永続化クラスPageFactoryに渡すこと。
PageFactoryではファイル以外に(スコア付きの)ページオブジェクトの集合も受け取れるように。
ページの集合よりもメモ化された永続化オブジェクトのほうが良さそう。永続化されたページと、永続化された検索結果としてのページ(の内部名の)集合。

→PageFactoryではページを要求されたとき…
-検索中
--検索中、検索/スコアリングから流れてきたページオブジェクトの集合を保管しておいてそこから返す。メモ化もする。その集合内のページだけ返し、それ以外は存在しないと回答する。ただし設定類のページは読み込めないと。
--検索中、検索/スコアリングからのオブジェクトが無い場合、メモ化された検索/スコアリングの結果を探して、そこからページを復元して返す。メモ化されたスコアリング結果にあるページだけ返し、それ以外は存在しないと回答する。ただし設定類のページは読み込めないと。
--(検索中、スコアリング結果が見つからないのはエラー)
-通常時、永続化されたページオブジェクトをファイルから復元して返す。制限なし。
→ PageFactoryではなく、検索の中のクラスが…
検索中、検索/スコアリングで得られたページ名を制限付きPageFactoryに渡す。
メモ化もする。
あとは通常時と同じ。PageFactoryは永続化されたページオブジェクトをファイルから復元して返す。

…という3つのモードを用意。

----
検索中と通常時でクラスを分ける?
親子?抽象クラスを親に持つ兄弟?
→完全な互換性が無いので兄弟。

検索中と通常時でクラスを分ける。
→ 完全な互換性が無いので兄弟クラス。

PageFactoryを抽象クラスにして。
+制限なしのPageFactory
通常時。
+ページセットを受けて、その中にあるページしか返さないPageFactory
検索時(サブセットwiki使用時)

----

設定類は特別なメソッドでアクセスできるように。
ユーザーに閲覧権限が無くても設定類ページは復元しなければならない。
対象ページを制限するようなことはしない。ページが設定類じゃなくても制限なし。

''ヘッダーやサイドバーに埋め込んであるページも制限無く復元しないと。''

*** 方法 [#l7013d07]
%%→ 小さなwikiは作らず、タグクラウド機能が独自に同じクエリーで検索、同じページセットを得る。%%

%%検索クエリーを受けられる機能は検索結果画面に埋め込める。これで検索結果だけのタグクラウドや、項目ごとのタスクリストを。%%

→ ページセットを複数(常にすべてのページのもの、検索結果などで簡単に変わるものなど)を使い分ける。
ページセットを考慮しない機能はサブセットWikiに対応しない。
絞り込んだページセットを対象にして、いろいろなページ/要素が機能するように。