- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- :/検索/クエリー へ行く。
- 1 (2007-12-30 (日) 02:57:50)
- 2 (2008-01-01 (火) 03:01:48)
- 3 (2008-02-11 (月) 15:29:56)
- 4 (2008-02-20 (水) 01:39:17)
- 5 (2008-09-28 (日) 00:01:13)
- 6 (2008-09-28 (日) 00:09:25)
- 7 (2008-09-28 (日) 01:01:41)
- 8 (2008-11-08 (土) 23:08:13)
- 9 (2008-11-08 (土) 23:19:06)
- 10 (2008-11-09 (日) 01:14:45)
- 11 (2008-11-23 (日) 23:01:05)
- 12 (2009-11-07 (土) 01:17:01)
- 13 (2010-11-21 (日) 21:11:32)
- 14 (2011-01-14 (金) 08:28:48)
- 15 (2011-01-16 (日) 11:34:09)
- 16 (2011-01-17 (月) 17:30:55)
- 17 (2011-02-08 (火) 19:14:28)
- 18 (2011-02-14 (月) 15:46:14)
- 19 (2011-02-19 (土) 19:16:47)
- 20 (2011-03-02 (水) 11:31:59)
- 21 (2011-09-08 (木) 13:25:55)
- 22 (2011-09-08 (木) 13:39:26)
- 23 (2011-09-08 (木) 15:20:19)
- 24 (2011-09-08 (木) 16:06:56)
- 25 (2011-09-10 (土) 02:45:42)
- 26 (2011-10-28 (金) 09:07:32)
- 27 (2011-12-14 (水) 01:29:17)
- 28 (2012-09-20 (木) 06:52:11)
- 29 (2012-09-20 (木) 07:38:42)
- 30 (2013-02-06 (水) 01:52:09)
- 31 (2013-02-21 (木) 23:57:46)
- 32 (2013-03-20 (水) 22:39:00)
- 33 (2013-09-12 (木) 09:07:10)
- 34 (2014-03-12 (水) 16:10:23)
- 35 (2014-03-22 (土) 09:23:52)
- 36 (2016-04-04 (月) 20:31:14)
- 37 (2020-10-31 (土) 11:02:23)
目次 † 
関連 † 
クエリー周辺のタグ † 
Array
検索/クエリー † 
検索クエリーは検索を実現するクラス。
Element系オブジェクトと修飾句の順序付きリスト。
修飾句 † 
- 接続句(文字表現)
- And
- Or
- AndAlso
- OrElse
- 否定句(文字表現)
- Not
- 肯定句(文字表現)
- (なし)
設計上では修飾句オブジェクトの中にElement系オブジェクトが含まれる構造。
どんなクエリーも1つの肯定句オブジェクトに含まれる。
修飾句が出力するのは真理値ではない。
検索/スコアリングに合わせてスカラー値で。
実装 † 
ソートの第一キーは最初のキーワード † 
メモ化 † 
メモ化の予定なし。どこかのページが編集されればメモは期限切れなので効果が低い。
検索/クエリーをメモ化するなら、ラベルは検索/クエリーをオブジェクト化したもののハッシュ値。
順不同で。検索/クエリーが構造的だとやりにくい。できるなら検索処理で作られる検索/クエリーのオブジェクトをそのまま流用。
ハッシュ値の重複を防がなければならない。同じ意味のオブジェクトが同じハッシュ値になるのはいい。クエリーが同じ意味なら検索結果も同じ。
検索クエリーはオブジェクト † 
検索ワードにクラス名を併記すると、同じ型のオブジェクト(を含むページ)にのみ適合。
date:200612
date:2007-20080331
…など。
検索ワード→オブジェクト。このオブジェクトとページ内のオブジェクトで「近さ」を求める。
クラス名の無い検索ワードは文字列として扱い、オブジェクトの文字列表現と比較。適合する。
ページ内が入れ子になっているので平たい構造にしてから比較。
入れ子構造まで合わせるとなると使いにくいため。
Visitor † 
クエリーを保持し、Element階層内にある各Elementを処理する。
検索/クエリーの内部はオブジェクト化したページと同じ † 
比較できるようにするため、検索/クエリーを構成するオブジェクトとページを構成するオブジェクトは同じクラス。
検索/クエリーはオブジェクトの集約。
検索/クエリーの要素1つに対して、ページを構成する要素全てを突き合わせる。
適合する単位 † 
一般的な考え方だとページ単位。検索式に適合したページを検索結果に出す。
ここではページを構成するオブジェクト単位で。
1つのページにいくつも適合箇所が生じる。
それらを全て表示するか、ページごとに1つだけ表示するかは検索/フォーマットの役目。
検索/クエリーを構成する要素 † 
オブジェクト。ページを構成するWikiNotation系オブジェクトと同様、テキストから作られるオブジェクト。
というわけで、プラグイン呼び出しのみ検索とか、日付だけ検索などが可能。
比較の仕方はそれぞれのオブジェクトの責務。後で考えればいい。
ただし、ページ内のWikiText→オブジェクトのルールとは違う可能性あり。
検索式ではスペースや句読点を区切りにするし、表記法を変えることも考えられるから。
つまり別のルールで。ただし同じクラスで。
というわけで、検索/クエリーはページ/内容を表すオブジェクトと同じクラスの集約。
つまり検索は検索式をページ化して、他のページとの類似度を算出する処理。
「ホットな記事、クールな記事」は † 
「ホットな記事」はページの作成日時と現在日時の適合度が高い記事のこと。
スコア制 † 
検索/クエリーに適合するとスコアが算出される。
適合した要素に加算。(ページではない)
後でページ単位で集計したり、要素単位のままスコアを参照したりするのは検索/フォーマットの役目。
検索/クエリーはプラグイン † 
- 正規表現を与えて利用できる汎用なもの
- プログラムで定義、特殊な評価方法をするもの
…などで。
スコアもプラグインでの定義。プラグインでは検索時の評価方法も定義しておく。基本はパラメーターだけの文字列比較。
date:2007/11/1
という検索式から
dateオブジェクト(内容:2007/11/1)
といったオブジェクトを作るように。
これがページ内の「2007/10/20」などといった内容のdateオブジェクトに適合。
区切り文字のみで分ける † 
検索式で「10/17から」など、余計な文字が付いているときは分けない。
単一の文字列として扱う。
検索式は区切り文字でのみ分ける。
使い方をシンプルにするため?
Google式で""間を文字列にしたほうがいい?
範囲指定は必要。カスタマイズ可能なのでいろいろな表現を有効に。