• 追加された行はこの色です。
  • 削除された行はこの色です。
RIGHT:&tag(検索,機能,ページ,主要);

-一般的に検索はフィルタリングとソート。ここで考えるのはこれらを一段汎用化したもので、スコアリングとフォーマット。
-検索はページに書かれた情報を活用する機能。
ページには単純な構造で十分な情報を。その情報をつなぎ合わせるのが検索。
-自動生成されるページは検索機能によって作られる。
動的に生成されるページは検索機能を使ったもの。

------------------------------------------------

+オブジェクト化
検索/クエリー と ページ をElement化
+類似度評価
検索/スコアリング
結果に出すものと順序が決まる。
+ページ化
検索/フォーマット
体裁を与える。

※いずれも検索/クエリーで作ったオブジェクトの機能で。












*方法 [#tc72a538]

実装上は検索も機能。
組み込み済み機能。必ず存在する機能。
こうして、他の機能と連携できるように。


RIGHT:&tag(検索,方法);





















**1ページ、1ソート順 [#d269dad4]
ソート順が違う結果を出力するなら別のページに。
そうしないとAPIなどから自動処理しづらい。

→検索/クエリーのリスト1つあたり1ページに。

ソート順は検索/クエリーが決める。

RIGHT:&tag(検索,方法);


**%%フィルタリング、変換%% [#m9b98a57]
%%+検索フォームからの入力%%
%%フィルタリング、変換→検索クエリー%%
%%+ページ%%
%%フィルタリング、変換→検索用ページ%%
%%+検索クエリーと適合した検索用ページのみ検索結果に追加する%%
%%+検索結果をソートする%%

%%…を検索/クエリーの数だけ繰り返す。%%
%%フィルタリングルール、またはソートルールだけの検索/クエリーも可能。%%

%%UIでフィルタリング、変換のルールを指定したりしない。面倒になる。%%
%%機能を作ることで利用可能に。%%


%%→ソートは最後だけ(テンプレートに埋め込むときだけ)にする。その代わり、スコアを最後まで残す。%%

RIGHT:&tag(検索,方法);


**日記を特定のキーワードで検索して「その1日前に何をしていたか」を一覧したい [#rc276910]
→検索結果1件ごとに「1日前」というリンクを辿って、その1件をリンク先と置き換える。
→検索結果からそれぞれの1日前のページ一覧を作れる。
…というのをフィルタリングルールで。

+フィルタリング1回目
全ページからキーワードを含むページのみを得て、それを結果へ。
+フィルタリング2
結果から「1日前」というリンクを得て、それを展開して、結果へ。
展開は リンク→リンク先のページ をする機能を使って。
+フィルタリング3
結果の見出しのみを得て、それを結果へ。

検索キーワードではAndAlso検索をするように指定。[[検索:AndAlso]]

RIGHT:&tag(検索,方法);


**検索結果に要約と「編集」リンクを [#e6535c34]
-要約表示
ページ内容の内、該当部分も表示させたい。(ページ単位よりも小さい単位で)
段落単位か行単位で。(文字/文節単位だと意味が分からない)
ツリー形式の出力なら段落単位、表形式の出力なら行単位で。

 全ページの一覧
 	ページ1
 		章1 [[編集:ページ1/章1]]
		該当部分(段落単位)
		--------
		章4 [[編集:ページ1/章4]]
		該当部分(段落単位)
 	ページ3


-検索結果から編集を行うことは多い。「編集」リンクで直接編集したい。(章の実装をページにしておけば章単位の編集になって便利)
ページが存在しないなら「編集」は「ページ作成」と同じ機能になるので、この編集リンクだけでページ作成にもなるし。
→必ず「(検索キーワード)について書く」というリンクを検索結果に含める。

RIGHT:&tag(検索,方法);


**%%出力はHTML%% [#la784ac6]
-%%ページの一部分%%
%%ページに埋め込んで表示できる形式。%%
-%%章ではない%%
%%章としての機能を持たないため。%%

RIGHT:&tag(検索,方法,ページ);


**時系列検索 [#z36f3560]
1つのページのバージョンを検索。
新→旧の順に優先して表示。

ある言葉がいつ(加えられた|消された)かが分かる。

日時を指定して、その時点での全てのページを探すのもいい。
「タイムマシン検索」?

これも(あるページの)全バージョンの一覧というページ内を検索することで実現。

RIGHT:&tag(検索,方法,履歴);

--------------------
全ページの全バージョンを検索できればなおいい。


**%%ページを探す、文字列を探す%% [#vef4a3c5]
-%%全ページから条件に合うページを探す。%%
-%%1ページ内の全テキストから条件に合う部分を探す。%%
%%行単位で。%%



%%→統一%%
%%これをページ内のテキストを探す方だけに統一できる。%%
%%「全ページの一覧ページ」を検索、このページには全ページが章として埋め込まれている。%%
%%で、章を含めて検索。%%
%%章を含めた検索は編集時のテキストを検索するのと同じ。章を展開して1つのWikiTextの形式にして処理。%%
%%章の展開を適切にすれば負荷を低減できる。%%



RIGHT:&tag(検索,方法);


**自動生成ページを検索対象にすることで特殊検索を [#z91ce8f0]
自動生成ページで特別な観点で集計した検索対象を作れば、いろいろな検索に対応できるはず。

RIGHT:&tag(検索,方法);


**検索のアルゴリズム [#f31c6921]
検索はページセットが制御。検索とはページセットが自身を縮小する処理のこと。→ページセット
呼び出された時に与えられた検索/クエリーと、自身が持つページを比較。

RIGHT:&tag(検索,方法);


**%%検索のアルゴリズム%% [#n8c9af7c]
-%%並べ替えをする%%
%%→複数の要素が必要%%

%%要素とは?%%
%%→Element%%
%%newとoutができるもの。%%

------------------------------------------------------------------------------------
-%%変換もする。%%
%%URL→ページ内容に。%%
%%その中の~月~日だけを(1つ)返す。%%

RIGHT:&tag(検索,方法);


**解釈 [#c1aa3e09]
数値なら近い数にも高スコアを。
#000000、#000なら各桁ごとに近い数かどうか判断。
#309と#209は最も近い数ということになる。

RIGHT:&tag(検索,方法);

-20061231と20070101も近い。
-月と日も近く、水と火も近い。

それぞれに対応する記法が要る。
もし、特定のページで記法を定義できるような機能ができれば、それで間に合う。

#br

%%…これをページ/名前とリンクで定義できれば尚可。%%

-%%特殊な数値もページで定義できる。%%
%%→マッピング。%%
%%1次元の値に写像すればいい。%%
%%x1〜x2→y5〜y6%%
-%%クエリー作成に時間がかかりそうなので、クエリー作成と検索を分けてもいい。%%
%%操作不要、自動で続けるようにして。クエリー作成でマッピング後の表現にして。%%

%%RIGHT:[[:t/!]]%%

-定義は機能のクラスごとに。
解釈の仕方は機能の定義。
機能には2つのオブジェクト間の「近さ」を求める機能を。

→つまり#数値記法や曜日記法、体重記法、日付記法、季節記法、二十四節気記法などを用意、それぞれの記法ごとに検索するということ。

RIGHT:&tag(検索,方法,近さ);


**データ型はページ主体 [#d0d25289]
すべてのページを得る → その中を検索 → ページを得る → その中を検索 → ページを得る → その一覧を検索結果とする。
というDecoratorパターンになるように。

機能出力を機能の入力にする仕組みで。

RIGHT:&tag(検索,方法);