関連ページ

/資料/内部仕様/検索v5

経緯

  • v5 で「v5 マイグレーションが済んでいないレガシーページ かつ プライベートなページを表示する」ための専用のクエリが必要になった

検索シーケンス

3つのステージを順に行う

  1. クエリの parse
  2. Resolver による Delegator の決定
  3. Delegator に処理を委譲

クエリと Delegator

クエリの種類

  1. 名前付きクエリ(NamedQuery)
  2. 全文検索クエリ(FullTextSearchQuery)

名前付きクエリ (NamedQuery) とは?

  • 複合 Term ではなく、クエリ全文の完全一致で任意の処理を呼び出すクエリ

syntax (仮)

  • [nq:query_name]
    • e.g. [nq:private_migratable_pages]

ユーザー定義クエリとは? (※未来の話)

  • 管理ユーザーが作ることのできる名前付きクエリ

  • エイリアスを作る

    • 例 [管理用ページ] => prefix:/管理
    • 例 [Tips] => tag:Tips prefix:/Tips
  • 既存の検索フィルタからカスタマイズする

    • WIP

全文検索クエリ (FullTextSearchQuery) とは?

  • 複合 Term から成る
  • 全文検索用の Delegator で処理を行うクエリ

Delegator の挙動・役割

  • 3種類のアクションを想定
    1. プリセットアクションの実行
    2. 全文検索アクションの実行
    3. 別クエリへの置き換え(エイリアス)
      • 置き換え後、1 or 2 の実行へ

プリセットアクションの仕様例

  • [nq:private_migratable_pages]
    • v5 マイグレーションが済んでいないプライベートなページを検索する

全文検索アクションの仕様例

  • Elasticsearch による全文検索
  • MongoDB のみによる全文検索の検索

検索用ワード

private legacy pages elasticsearch フィルタ