完全一致コードの検索
- プラン: Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed
- ステータス: ベータ
この機能はベータ版であり、予告なく変更される場合があります。詳細については、エピック9404を参照してください。この機能に関するフィードバックを提供するには、イシュー420920にコメントを残してください。
完全一致コードの検索を使用すると、完全一致モードと正規表現モードを使用して、GitLab全体または特定のプロジェクト内のコードを検索できます。
完全一致コードの検索はZoektによって実現され、この機能が有効になっているグループではデフォルトで使用されます。
完全一致コードの検索を使用する
前提要件:
- 完全一致コードの検索を有効にする必要があります:
- GitLab.comの場合、完全一致コードの検索は有料サブスクリプションで有効になります。
- GitLab Self-Managedの場合、管理者はZoektをインストールして、完全一致コードの検索を有効にする必要があります。
完全一致コードの検索を使用するには:
- 左側のサイドバーで、検索または移動先を選択します。
- 検索ボックスに検索語句を入力します。
- 左側のサイドバーで、コードを選択します。
プロジェクトまたはグループで完全一致コードの検索を使用することもできます。
使用可能なスコープ
スコープは、検索するデータの種類を表します。完全一致コードの検索では、次のスコープを使用できます:
| スコープ | グローバル12 | グループ | プロジェクト |
|---|---|---|---|
| コード | 非対応 | 対応 | 対応 |
Footnotes(補足説明):
- 管理者は、グローバル検索のスコープを無効にできます。GitLab Self-Managedでは、管理者は
zoekt_cross_namespace_search機能フラグを使用して、グローバル検索を有効にできます。 - GitLab.comでは、グローバル検索は有効になっていません。
Zoekt検索API
Zoekt検索APIを使用すると、検索APIを完全一致コードの検索に使用できます。代わりに高度な検索または基本的な検索を使用する場合は、検索タイプを指定するを参照してください。
グローバルコード検索
この機能の利用可否は、機能フラグによって制御されます。詳細については、履歴を参照してください。この機能はテストには利用できますが、本番環境での使用には適していません。
この機能を使用すると、GitLabインスタンス全体のコードを検索できます。
グローバルコード検索は、大規模なGitLabインスタンスでは適切に機能しません。この機能が20,000を超えるプロジェクトを持つインスタンスで有効になっている場合、検索がタイムアウトする可能性があります。
検索モード
GitLabには2つの検索モードがあります:
- Exact match mode(完全一致モード): クエリに完全に一致する結果を返します。
- Regular expression mode(正規表現モード): 正規表現とブール式をサポートします。
デフォルトでは、完全一致モードが使用されます。正規表現モードに切り替えるには、検索ボックスの右側にあるUse regular expression(正規表現を使用)( )を選択します。
構文
次の表は、完全一致モードと正規表現モードのクエリの例を示しています。
| クエリ | 完全一致モード | 正規表現モード |
|---|---|---|
"foo" | "foo" | foo |
foo file:^doc/ | /docで始まるディレクトリ内のfoo | /docで始まるディレクトリ内のfoo |
"class foo" | "class foo" | class foo |
class foo | class foo | classとfoo |
foo or bar | foo or bar | fooまたはbar |
class Foo | class Foo(大文字と小文字を区別) | class(大文字と小文字を区別しない)とFoo(大文字と小文字を区別する) |
class Foo case:yes | class Foo(大文字と小文字を区別) | classとFoo(どちらも大文字と小文字を区別) |
foo -bar | foo -bar | fooだがbarではない |
foo file:js | jsを含む名前のファイル内のfoo | jsを含む名前のファイル内のfoo |
foo -file:test | testを含まない名前のファイル内のfoo | testを含まない名前のファイル内のfoo |
foo lang:ruby | Rubyのソースコード内のfoo | Rubyのソースコード内のfoo |
foo file:\.js$ | .jsで終わる名前のファイル内のfoo | .jsで終わる名前のファイル内のfoo |
foo.*bar | foo.*bar(リテラル) | foo.*bar(正規表現) |
sym:foo | クラス、メソッド、変数名などのシンボル内のfoo | クラス、メソッド、変数名などのシンボル内のfoo |
既知の問題
20_000トライグラム以下で1 MB未満のファイルのみが検索可能となっています。詳しくは、イシュー455073をご覧ください。- プロジェクトのデフォルトブランチのみで、完全一致コードの検索を使用できます。詳しくは、イシュー403307をご覧ください。
- 1行に複数の一致がある場合、1つの結果としてカウントされます。
- 改行が正しく表示されない結果が発生した場合は、
gitlab-zoektをバージョン1.5.0以降に更新する必要があります。