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

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

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

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

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












*方法 [#tc72a538]

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


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









**AND、ORを使わない [#r26766ad]
検索は検索クエリーをページ構造と同じ構造のオブジェクトに変換、類似度判定で実現。
そのため、ANDやORは使えない。代わりに必須かオプションかを検索キーワード毎に指定。

 語1 語2 語3?
…で、語1と語2を含むページを指定、語3まで含むものを上位に表示。

 語1 AND 語2 OR 語3
…などは表現できないので、代わりに
 語1 語2

 語3
…に分けることになる。

|必須|(何もつけない)か、語頭か語尾に「!」|
|オプション|語頭か語尾に「?」|
|不要|語頭か語尾に「-」|

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


**OR検索と同時にAND検索 [#z174f6ed]
複数キーワードを受けたとき、全てを含むページ、いずれかを含むページの順に高スコアを付ける。
手間を省き、情報の取りこぼしを防ぐ。

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


**インデックスを作るなら別プロセスで [#z93d878a]
インデックスを作成・更新するなら別プロセスか、本体プロセスの余り時間に。
ページを更新するたびに必要、かつページの更新処理には不要なので。

インデックス再作成を要する操作→インデックス再作成完了までの間、更新されたページ(インデックスに入っていないドキュメント)はインデックスなしの全文検索の対象にする。


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


**%%たくさん合えばスコア増%% [#n0c13fc4]
%%RegExpのグループに合った数だけスコアを増やす。%%
%% /([0-9]+)(キロ)?/%%
%%…なら0〜2コのグループに合う。%%
%%→スコアを0〜2倍に。%%

%%こうして単位(キロ)を含めて合った場合に高スコアにできる。%%

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


**検索履歴 [#qf037ba0]
検索フォームで
利用者×ページ×検索ワード
を保存。
「自分が…というページを読んでいるとき検索したくなったこと」が…というページの検索フォームにリストアップされるように。

-タグ付け、リンク付けの参考になる
RIGHT:&tag(タグ,リンク);
-二度手間を減らすことにもなる
RIGHT:&tag(手間);

保存する領域は利用者。
利用者ページに記録する。
ということで、利用者自身が編集できる。(追加も削除も)

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


***入力されたキーワードを関連付ける [#r552c0ff]
主観検索のために。

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

検索キーワードのOR結合を同義、AND結合を上下関係のある言葉として検索時に使用。
検索処理内で使うか、検索結果に関連語として表示するか。

**検索はフレームワークの機能 [#d350679f]
記法から呼び出すように。


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


**関連語検索 [#v39a6125]
関連語検索、あるいは多段検索、デリゲート検索。

検索→検索結果に出せるページに含まれるリンクを集計(リンク=ページ名)→多い順にリスト化。
出現頻度の高いページ名を検索語に追加して再検索すると関連語も検索できる。検索漏れ防止。

これを''ワンタッチ''で。

検索→検索結果表示、そのページから自動的に関連語を含む検索開始(「関連語検索中」表示)→関連語検索結果が画面上に''追加''される。
いつも関連語が必要とは限らないので、一度検索結果表示。表示後に関連語検索が始まるように。

どれくらい出現頻度があれば関連語に含めるか…。これは検索時に利用者が与える。しきい値を低くすると多くの関連語が含まれる。

%%関連語探し%%
%%あるリンクと同じページにあるリンクのリストを得る。%%
%%(共起しているリンクを複数得る)%%

%%検索を一時的ページと、そのページへのバックリンクとして実装すれば、リンク←ページ名←検索語、となる。%%
%%つまり、検索語入力→関連語リストを得ることもできる。%%

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


**OR結合の結果はヒットした検索語を併記 [#u6f6da90]
検索でOR結合がある場合、結果1件ごとにヒットした検索語を併記。
ORを含む場合、ヒットしていない語も生じるので、どの検索語にヒットしたかが分かりにくい。それを明示するため。

''OR''で切ったキーワード別に検索リンクを用意できるならそっちのほうがいい。
順序は全キーワードの結果を混ぜてソート。これを見るために''OR''を使うので。OR断片ごとにソートしたいなら検索リンクをクリック→そのOR断片だけで検索。

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


**検索キーワードをリンク化 [#y1127f7a]
再利用しやすくなる。
orで切って、andはつなげて。それぞれを検索リンクにする。
ブラウザーのブックマークバーにドロップできるように。

リンク部分はヒットした部分の強調表示と同じく強調。

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


**検索をリンクの仕組みで実装 [#m1001c69]
+検索語入力
+検索語を一時的なページ名として扱う
このページが検索結果ページ。
+%%リンク、%%バックリンク
%%リンクは結果、バックリンクはヒットした部分の強調にするため。%%

これは検索結果を共有・保存することになる。
個人利用ではデフォルトにしてもいい。
不特定多数利用ではバックリンク(トラックバック)を公開しているブログと一緒。検索結果からページを選んだ時点で保存。

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


**検索ページ [#rbd240bc]
検索/クエリーを検索機能呼び出し(記法からの呼び出し)に書き入れると出力が(参照時点の)検索結果になる。
例えばタグ[Wiki]のページを作ると、タグ[Wiki]を含むページの一覧になる。

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


**検索はページ集約 [#j5d3f33c]
検索はページを集約する機能でもある。
検索/クエリーに適合したページを1つのページにまとめる。
検索結果を検索すれば集約をさらに集約することになる。

----

集約をさらに進めるために、
ページを一目見ただけでそのページを見る価値があるか判断できるようにするため、検索結果の冒頭にまとめを表示。

まとめ
-集まったタグのタグクラウド
-ヒット数をorごとに
andはつなげたままで
-これまでの検索クエリーをorで切ってリストアップ
ヒット数も添えて。
 [検索 ページ](18), [検索 結果 ページ](8)

----

機能出力を機能のパラメーター(入力)にする仕組みで。
検索機能出力を検索機能の入力に。→何段でもDecorationできるように。

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


**検索結果をRSS化 [#i36f4875]
検索/フォーマットで実現。

さらに他ページのリソースを取得する機能と、RSSを解析する機能でRSSをページ化。(検索結果(ページ)→RSS→ページ)
他サイトのリソースを取得する機能はあっても良いがRSS取得のためなら要らない。

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(検索,方法);