高度な構文検索

注:

GitLab.comでの利用可能性:GitLab.comではAdvanced Global Search (powered by Elasticsearch)はまだ利用できません。 2020年の第3四半期にすべての有料グループで順次利用可能になる予定です。 最新のタイムラインについては、このepicをフォローしてください。

高度なクエリを使用して、よりターゲットを絞った検索結果を得ることができます。

こちらはユーザー向けのドキュメントです。 Elasticsearchのインストールや設定については、管理者向けのドキュメントをご覧ください。

概要

高度な構文検索は高度なグローバル検索のサブセットで、より具体的な検索結果を得たい場合に使用できます。

高度なグローバル検索では、デフォルトのブランチのみを検索できます。

ユースケース

例えば、あなたが開発した製品が、他のグループの下でホストされている他の製品のコードに依存しているとしましょう。

GitLabインスタンスの下には何百もの異なるプロジェクトがホストされているため、検索結果をできるだけ効率的にする必要があります。 検索したいもの(例えば関数名)はなんとなくわかっていますが、同時に確信もありません。

その場合、クエリに高度な検索構文を使用すると、より良い結果が得られます。

高度な構文検索は、接頭辞、ブーリアン演算子などを使用したあいまい検索や完全検索クエリをサポートしています。

詳細はElasticsearchのドキュメントをご覧ください:

  • 例えば、display bug でイシューを検索すると、この2つの単語に一致するすべてのイシューが、どのような順序でも返されます。
  • 正確なフレーズを検索するには (ステミングは適用されます)、二重引用符を使用します:"display bug"
  • 表示されないバグを見つけるには、-bug -display
  • ディスプレイやサウンドのバグを見つけるには、|bug display | sound
  • 用語をグループ化するには、括弧を使用します:bug | (display +sound)
  • 部分的に単語をマッチさせるには、*を使用します:bug find_by_*
  • これらの記号のいずれかを含む用語を検索するには、\を使用します:argument \-last

構文検索フィルター

高度な構文検索はフィルターの使用もサポートしています。 使用可能なフィルターは以下の通りです:

  • filename: ファイル名でフィルタリングします。 glob (*) 演算子を使用すると、あいまいマッチングを行うことができます。
  • path: パスによるフィルタリング。 ファジー・マッチングにはグロブ (*) 演算子を使用できます。
  • extension: ファイル名の拡張子でフィルタリングします。 拡張子は先頭のドットなしで記述してください。 完全一致のみです。

これらを使用するには、コロン (:) と値の間にスペースを入れずに、<filter_name>:<value> の形式でクエリに追加するだけです。

例:

  • hello_world.rbという名前のファイルを検索します:* filename:hello_world.rb
  • whatever というテキストが内部にあるhello_world という名前のファイルを検索します:whatever filename:hello_world
  • .rb 拡張子のファイル内部で ‘def create’ というテキストを検索します:def create extension:rb
  • encryptionというフォルダのファイル内部でsha というテキストを検索します:sha path:encryption
  • hello で始まり、world を含み、.js の拡張子を持つファイルを検索します:world filename:hello* extension:js