シビライザー検索オペレーター - suewonjp/civilizer-jpdoc GitHub Wiki

シビライザー検索オペレーターは細かい検索制御が行えるようにする為考案された機能である.

例えば,次の1番目の検索構文は簡単ではあるものの,2番目の構文より多くのフラグメントにマッチする為,非効率である.

  1. big data databases
  2. "big data"/c tag:databases
    • この構文の意味については後で触れる.

より多くの検索結果は狙っていた情報に辿り着くまで時間がかかってしまう.
シビライザー検索オペレーターを使えば無関係のフラグメントを排除出来検索がもっと効率良くなる.

シビライザー検索オペレーターは_カテゴリオペレーター_と_フラグオペレーター_の2種類がある:


:heavy_check_mark: カテゴリオペレーター

このオペレーターは検索ワードを特定のカテゴリ(中身,タイトル,タグなど)だけに定まるようにすることで検索効率を向上する.
2つ以上のオペレーターを一緒に使うことも出来る.

  • :
    • 中身あるいはタイトルが検索ワードの全てを含むフラグメントにマッチする.
    • 何のカテゴリーオペレーターも指定しない時は暗黙的にこのオペレーターが付けられる.
    • 例): big data => 中身あるいはタイトルが次のテキストを含むフラグメントにマッチ: data is big, big data, Big data, など.
  • any:
    • 中身あるいはタイトルが検索ワードの何かを含むフラグメントにマッチする.
    • 例)any: big data => 中身あるいはタイトルが次のテキストを含むフラグメントにマッチ: big animal, database, big data, など .
  • tag:
    • タグに検索ワードの全てがマッチするフラグメントにマッチする.
    • 例)tag:xml html => xmlhtml両方のタグを持つフラグメントにマッチ.
    • 他のカテゴリオペレーターと違いtag:anytag:コンマ区切りのリストを受け入れてくれる.
      • 従って,上記の検索構文はtag:xml, htmlとも書ける.
  • anytag:
    • タグに検索ワードの何かがマッチするフラグメントにマッチする.
    • 例)anytag:xml html => xmlあるいはhtmlのタグを持つフラグメントにマッチ.
  • title:
    • タイトルが検索ワードの全てを含むフラグメントにマッチする.
    • 例)title:install printer => タイトルがinstallprinterを含むフラグメントにマッチ.
  • anytitle:
    • タイトルが検索ワードの何かを含むフラグメントにマッチする.
    • 例)anytitle:android ios => タイトルがandroidあるいはios(あるいは両方)を含むフラグメントにマッチ.
  • text:
    • 中身が検索ワードの全てを含むフラグメントにマッチする.
    • 例)text: big data => 中身が次のテキストを含むフラグメントにマッチ: data is big, big data, Big data, など.
  • anytext:
    • 中身が検索ワードの何かを含むフラグメントにマッチする.
    • 例)any: big data => 中身が次のテキストを含むフラグメントにマッチ: big animal, database, big data, など .
  • id:
    • 指定したIDのフラグメントにマッチする.
    • 例)id: 1 3 5 9 => IDが1, 3, 5, 9の(4つの)フラグメントを取得.

[ コロン(:)について ]
コロン(:)はシビライザー検索オペレーターでは大事な意味を持つ.
もし,検索ワードが文字通りのコロンを含んだ場合, ダブルクオーテーションマーク(")で囲む. (例:"some-keyword:"

[ 簡略型 (バージョン0.9.0.RC6から) ]
タイピングの手間を少しでも減らす為に次のように簡略して書くことが可能;

tag: => t:
title: => ti:
text: => te:
any: => a:
anytag: => at:
anytitle: => ati:
anytext: => ate:

[ タグの階層関係を考慮した検索 ]
タグの検索ワードは基本的に階層関係を考慮しない.
しかし,特定のタグとその子孫のタグに紐付いた全てのフラグメントを取得することも可能である.('/h' フラグオペレーターを利用する.下記参照.)


:heavy_check_mark: フラグオペレーター

これらのオペレーターは各検索ワードの尻に付けられることでマッチ条件を細かく制御出来る.

  • /c
    • (英語の)大文字/小文字を区別する(デフォルトでは区別しない)
    • 例) "Big Data"/cBig Dataにマッチするが,big dataにはマッチしない.
  • /w
    • 単語に完全一致
    • 例) device/wdeviceにマッチするが,devicesにマッチしない.
  • /b
    • 〜で始まる単語
    • 例) html/bhtmlhtml5にマッチするが,xhtmlにマッチしない.
  • /e
    • 〜で終わる単語
    • 例)mail/eemailGmailにマッチするが,mailsにマッチしない.
  • /r
    • 正規表現
    • 例) https?/rhttphttpshttps://にマッチするが,ftpにマッチしない.
  • /-
    • インバース
    • 指定したパターンとマッチしないものをチョイス.
    • 例) android/-androidというテキストを含まないフラグメント(中身,タイトル,タグなどの対象はカテゴリオペレーターで定める)にマッチする.
  • /h
    • タグの階層関係を考慮
    • タグカテゴリオペレーター( :tag:anytag )と一緒に使う時のみ有効.
    • そのタグに紐付いたフラグメントのみならず,それの子孫タグと紐付いたフラグメントにもマッチ.
    • 例) tag:business/hbusinessというタグとその全ての子孫タグに紐付いたフラグメントを全部取得する.
  • フラグオペーレーターは複数以上組み合わせることが出来る.
    • 例) Down/bcDownloadDownsideにマッチする. ( download(小文字)やUpsideDownDownで始まらない)にはマッチしない )
  • /b, /e, /w は**アンダースコア( _ )**以外の特殊文字( ~{}()#$@,%-+ など )を含む場合は(仕様上)正しく機能しないので注意.

上記の検索構文"big data"/c tag:databasesは次の条件に当てはまるフラグメントにマッチする.:

  • 中身やタイトルにbig dataというテキストを含む:
    • /cフラグオペレーターがある為,大文字/小文字を区別する.
    • ダブルクオーテーションマークで囲んだ為,正確にbig dataそのものの構文 ( big + 空白 + data )にマッチする.
  • databasesというタグを持つ.