正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

完全一致コードの検索

  • プラン: Premium、Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed
  • ステータス: ベータ

この機能はベータ版であり、予告なく変更される場合があります。詳細については、エピック9404を参照してください。この機能に関するフィードバックを提供するには、イシュー420920にコメントを残してください。

完全一致コードの検索を使用すると、完全一致モードと正規表現モードを使用して、GitLab全体または特定のプロジェクト内のコードを検索できます。

完全一致コードの検索はZoektによって実現され、この機能が有効になっているグループではデフォルトで使用されます。

前提要件:

  • 完全一致コードの検索を有効にする必要があります:

完全一致コードの検索を使用するには:

  1. 左側のサイドバーで、検索または移動先を選択します。
  2. 検索ボックスに検索語句を入力します。
  3. 左側のサイドバーで、コードを選択します。

プロジェクトまたはグループで完全一致コードの検索を使用することもできます。

使用可能なスコープ

スコープは、検索するデータの種類を表します。完全一致コードの検索では、次のスコープを使用できます:

スコープグローバル12グループプロジェクト
コードdash-circle 非対応check-circle-filled 対応check-circle-filled 対応

Footnotes(補足説明):

  1. 管理者は、グローバル検索のスコープを無効にできます。GitLab Self-Managedでは、管理者はzoekt_cross_namespace_search機能フラグを使用して、グローバル検索を有効にできます。
  2. GitLab.comでは、グローバル検索は有効になっていません。

Zoekt検索API

Zoekt検索APIを使用すると、検索APIを完全一致コードの検索に使用できます。代わりに高度な検索または基本的な検索を使用する場合は、検索タイプを指定するを参照してください。

この機能の利用可否は、機能フラグによって制御されます。詳細については、履歴を参照してください。この機能はテストには利用できますが、本番環境での使用には適していません。

この機能を使用すると、GitLabインスタンス全体のコードを検索できます。

グローバルコード検索は、大規模なGitLabインスタンスでは適切に機能しません。この機能が20,000を超えるプロジェクトを持つインスタンスで有効になっている場合、検索がタイムアウトする可能性があります。

検索モード

GitLabには2つの検索モードがあります:

  • Exact match mode(完全一致モード): クエリに完全に一致する結果を返します。
  • Regular expression mode(正規表現モード): 正規表現とブール式をサポートします。

デフォルトでは、完全一致モードが使用されます。正規表現モードに切り替えるには、検索ボックスの右側にあるUse regular expression(正規表現を使用)( regular-expression )を選択します。

構文

次の表は、完全一致モードと正規表現モードのクエリの例を示しています。

クエリ完全一致モード正規表現モード
"foo""foo"foo
foo file:^doc//docで始まるディレクトリ内のfoo/docで始まるディレクトリ内のfoo
"class foo""class foo"class foo
class fooclass fooclassfoo
foo or barfoo or barfooまたはbar
class Fooclass Foo(大文字と小文字を区別)class(大文字と小文字を区別しない)とFoo(大文字と小文字を区別する)
class Foo case:yesclass Foo(大文字と小文字を区別)classFoo(どちらも大文字と小文字を区別)
foo -barfoo -barfooだがbarではない
foo file:jsjsを含む名前のファイル内のfoojsを含む名前のファイル内のfoo
foo -file:testtestを含まない名前のファイル内のfootestを含まない名前のファイル内のfoo
foo lang:rubyRubyのソースコード内のfooRubyのソースコード内のfoo
foo file:\.js$.jsで終わる名前のファイル内のfoo.jsで終わる名前のファイル内のfoo
foo.*barfoo.*bar(リテラル)foo.*bar(正規表現)
sym:fooクラス、メソッド、変数名などのシンボル内のfooクラス、メソッド、変数名などのシンボル内のfoo

既知の問題

  • 20_000トライグラム以下で1 MB未満のファイルのみが検索可能となっています。詳しくは、イシュー455073をご覧ください。
  • プロジェクトのデフォルトブランチのみで、完全一致コードの検索を使用できます。詳しくは、イシュー403307をご覧ください。
  • 1行に複数の一致がある場合、1つの結果としてカウントされます。
  • 改行が正しく表示されない結果が発生した場合は、gitlab-zoektをバージョン1.5.0以降に更新する必要があります。