検索はQueryクラスで Edit

類似度判定なので、リンク先を含む検索リンクの書式と同じ書き方
キーワード1 (Notation/Linkと同じ表現で)[[曜日:*]]
[[曜日:*]]は、リンク名(というか種類というかタグ)が「曜日」で、リンク先はなんでも可。
|
※ワイルドカードが必要。

検索結果のソートはNotation/Sortと同じ表現で。
検索結果のフォーマットはNotation系か検索結果ページテンプレートから選択して1つ指定。

要、評価順。
リンク元と比較するキーワードと、リンク先と比較するキーワードが混在するので。元→先の順に書くことにして、左から評価。

表現 Edit

書き方を

Page(ページ名検索キーワード) → ページ名リスト
Exist(ページ内容検索キーワード, 検索対象とするページ名リスト) → ページ名リスト
Filter(ワイルドカードを含むキーワード, 検索対象とするページ名リスト) → ワイルドカード部分リスト

とすると

Exist(『減』, Page(Filter([[1日前:*]], Exist(『増』, Page(*)))))


((『増』が記録されているページ)の1日前)で『減』が記録されているページ
つまり『減』が記録されているページを取得することになる。
これをより分かりやすく、間違えにくい表現にすると?


『増』のあるページ1日前つながりで『減』のあるページ
『増』 1日前つながり 『減』
『増』 1日前→ 『減』
検索解析するクラス対象ページ一致する文字列
『増』Notation/PlainTextページ『増』
1日前Notation/Linkページ(または『増』を含むページ[[1日前:.*]]
『減』Notation/PlainText『増』を含むページ『減』

1つのページと同じ表現ができるなら、検索クエリーのページ化→類似度判定1回で済むが、複数ページがどうリンクされているかまでは表現できない。
そのため、検索クエリーにはページ編集時とは違う特別な解析が必要になる。

解析後(単語ごとの分割と、処理順の決定後)はcode*:375と同じ。


?付きの検索 Edit

結果のソート順にのみ影響する?付き単語。

1 AND 2? OR 3

1 OR 3 2?

と同じ。

AND 2?、OR 2?、NOT 2?、どれも2?になる。

というわけで、「?付きは最後につけた方が分かりやすくなります」

先に書いた方が高スコア Edit

検索式の各語は先に書いた方がやや高スコア。(スコアに加味される他の要素よりも影響小)

A B C

順位

  1. A、B、C すべてを含むページ
  2. A、B を含むページ
  3. A、C を含むページ
  4. B、C を含むページ
  5. A だけ含むページ
  6. B だけ含むページ
  7. C だけ含むページ

…となる。

AND、OR、NOT、()()も有効に Edit

一般的なので。

基本的に部分一致。(プログラムからの検索の時も) Edit

完全一致にするには""か「」で。

検索結果をさらに検索 Edit

検索結果をさらに検索するには、検索結果をWikiテキストにしてページ化。
それが検索対象になればいい。

検索時、入力するのも記法 Edit

全てがページ
ただし、検索では複数ページにヒットする検索式を書けるので、特別な処理でそれを1ページ分ずつ分割。