流れ Edit

検索/フォーマット、検索/ソートはプラグインで。いくつでも何種類でも組み合わせて。

というわけで、検索/スコアリング、検索/フィルタリングまでが検索特有の処理。
それ以降(検索/フォーマットと検索/ソート)は汎用のプラグインで。

検索/クエリーはページ/作成処理の一部。

ページ生成時 Edit

  1. ページ(文字列)→ページ(オブジェクト)
    保存。永続化検索時に使えるようにするため。
 

検索 Edit

  1. 検索式→オブジェクト
    検索式(文字列)→検索式(オブジェクト)
    ページ(オブジェクト)と同じ。比較するため。
    1. オブジェクト選択
      比較時、検索/クエリー側のオブジェクト1つとページを構成するオブジェクト1つを選択しなければならない。
      検索/クエリー側は評価順が静的に決まっている。
      ページ側の順序ページが決めるので後回し。
      検索/クエリー側は1回だけ走査。ページ側は検索/クエリーの数だけ繰り返し参照される。
    2. 比較
      同じクラスのオブジェクト同士の比較。
      検索/クエリーのスコア算出処理にページ側のオブジェクトを渡す→スコア
    3. スコア加算
      検索/スコアリングの方法でページを構成するオブジェクトごとにスコア加算。

検索時(オプション Edit

検索以外にも使えるプラグインで。
順序も組み合わせも自由。

  1. 出力用データ生成
    検索/フォーマットの機能で検索結果に含めるデータと、検索/ソートに渡すデータ生成。
    ページ単位で結果を出すなら、ページごとにスコアを集計、ページごとにデータ生成。
  2. ソート
    検索/ソートの機能で検索結果に含めるデータを並び替え。

で、検索結果生成。
HTML化。これはページ/責務。正確にはページの下位にある検索用WikiFormatの責務。

※スコア加算、集計、ソートが分かれているのは繰り返しの単位や範囲が違うから。
※すべて検索/クエリーで作ったオブジェクトの機能で行う。

→プロトタイピング[?]

コード Edit

→検索/流れ/コード[?]