目次 Edit

  • -

関連 Edit


検索:クエリー

クエリー周辺のタグ Edit

Array

検索/クエリー Edit


検索/クエリーページ/内容と同等。ページと同じの値で検索条件を書いて比較。

見出し記法検索したときは見出しのみに適合して、見出し記法の書き方には適合しないように。

検索時のクエリー書式は検索/フィルタリング機能ごとに定義されるので、いろいろある。

検索クエリー検索を実現するクラス。

検索クエリー検索を実現するクラス。

Element系オブジェクトと修飾句の順序付きリスト。

修飾句 Edit

  • 接続句(文字表現)
    • And
    • Or
    • AndAlso
    • OrElse
  • 否定句(文字表現)
    • Not
  • 肯定句(文字表現)
    • (なし)

設計上では修飾句オブジェクトの中にElement系オブジェクトが含まれる構造。

どんなクエリーも1つの肯定句オブジェクトに含まれる。

修飾句が出力するのは真理値ではない。

検索/スコアリングに合わせてスカラー値で。

実装 Edit

メモ化 Edit


メモ化の予定なし。どこかのページ編集されればメモは期限切れなので効果が低い。

検索/クエリーメモ化するなら、ラベルは検索/クエリーをオブジェクト化したもののハッシュ値。

順不同で。検索/クエリーが構造的だとやりにくい。できるなら検索処理で作られる検索/クエリーのオブジェクトをそのまま流用。

ハッシュ値の重複を防がなければならない。同じ意味のオブジェクトが同じハッシュ値になるのはいい。クエリーが同じ意味なら検索結果も同じ。

検索クエリーはオブジェクト Edit


検索ワードにクラス名を併記すると、同じのオブジェクト(を含むページ)にのみ適合。
date:200612
date:2007-20080331

…など。

検索ワード→オブジェクト。このオブジェクトとページ内のオブジェクトで「近さ」を求める。

クラス名の無い検索ワードは文字列として扱い、オブジェクトの文字列表現と比較。適合する。

ページ内が入れ子になっているので平たい構造にしてから比較。

入れ子構造まで合わせるとなると使いにくいため。

Visitor Edit


クエリーを保持し、Element階層内にある各Elementを処理する。

適合する単位 Edit


一般的な考え方だとページ単位。検索式に適合したページ検索結果に出す。

ここではページを構成するオブジェクト単位で。

1つのページにいくつも適合箇所が生じる。

それらを全て表示するか、ページごとに1つだけ表示するかは検索/フォーマットの役目。

検索/クエリーを構成する要素 Edit


オブジェクト。ページを構成するWikiNotation系オブジェクトと同様、テキストから作られるオブジェクト。

というわけで、プラグイン呼び出しのみ検索とか、日付だけ検索などが可能。

比較の仕方はそれぞれのオブジェクトの責務。後で考えればいい。

ただし、ページ内のWikiText→オブジェクトのルールとは違う可能性あり。

検索式ではスペースや句読点を区切りにするし、表記法を変えることも考えられるから。

つまり別のルールで。ただし同じクラスで。

というわけで、検索/クエリーページ/内容を表すオブジェクトと同じクラスの集約。

つまり検索検索式をページ化して、他のページとの類似度を算出する処理

「ホットな記事、クールな記事」は Edit


「ホットな記事」はページの作成日時と現在日時の適合度が高い記事のこと。

スコア制 Edit


検索/クエリーに適合するとスコアが算出される。

適合した要素に加算。(ページではない)

後でページ単位で集計したり、要素単位のままスコアを参照したりするのは検索/フォーマットの役目。

検索/クエリープラグイン Edit


検索/クエリーを実現するクラスはいろいろと考えられるので、
  • 正規表現を与えて利用できる汎用なもの
  • ログラムで定義、特殊な評価方法をするもの

…などで。

スコアもプラグインでの定義。プラグインでは検索時の評価方法も定義しておく。基本はパラメーターだけの文字列比較。
date:2007/11/1

という検索式から

dateオブジェクト(内容:2007/11/1)

といったオブジェクトを作るように。

これがページ内の「2007/10/20」などといった内容のdateオブジェクトに適合。

区切り文字のみで分ける Edit


検索式で「10/17から」など、余計な文字が付いているときは分けない。

単一の文字列として扱う。

検索式は区切り文字でのみ分ける。

使い方をシンプルにするため?

Google式で""間を文字列にしたほうがいい?

範囲指定は必要。カスタマイズ可能なのでいろいろな表現を有効に。

設計 Edit

クエリーページと同じ Edit


検索類似度比較で実現するため、検索対象と同じにする。

クエリーはリスト構造のElement、ページは再帰的構造のElement。

クエリー側には一覧表示時のソートキー兼サマリーの目安になる()がある。

()ページ側に含まれていてもいいが、ページとしての動作では通常のテキストと同じように機能する。

クエリー()が複数ある場合は先頭が第一ソートキー Edit

クエリーに含まれる()は1つのNotation Edit


他のNotationと同様に、()Notation

検索/クエリーの内部はオブジェクト化したページと同じ Edit


比較できるようにするため、検索/クエリーを構成するオブジェクトとページを構成するオブジェクトは同じクラス。

検索/クエリーの要素1つに対して、ページを構成する要素全てを突き合わせる。