정확한 코드 검색

Tier: Premium, Ultimate Offering: GitLab.com, Self-managed
Status: Beta
  • GitLab 15.9에서 index_code_with_zoektsearch_code_with_zoekt라는 플래그와 함께 베타로 도입되었습니다. 기본적으로 비활성화되어 있습니다.
  • GitLab.com에서 GitLab 16.6에 활성화되었습니다.
  • 기능 플래그 index_code_with_zoektsearch_code_with_zoektGitLab 17.1에서 삭제되었습니다.
caution
이 기능은 베타이며, 사전 통지 없이 변경될 수 있습니다.
자세한 내용은 epic 9404를 참조하세요.

정확한 코드 검색을 사용하면 모든 GitLab 또는 특정 프로젝트에서
정확한 일치 및 정규 표현식 모드를 사용하여 코드 검색을 할 수 있습니다.

정확한 코드 검색은 Zoekt에 의해 지원되며,
기능이 활성화된 그룹에서 기본적으로 사용됩니다.

정확한 코드 검색 활성화

Zoekt 검색 API

  • GitLab 16.9에서 zoekt_search_api라는 플래그와 함께 도입되었습니다. 기본적으로 활성화되어 있습니다.

이 기능의 사용 가능성은 기능 플래그에 의해 제어됩니다.
자세한 내용은 기록을 참조하세요.
이 기능은 테스트용으로 사용할 수 있지만, 프로덕션 사용을 위해 준비되지 않았습니다.

Zoekt 검색 API를 사용하면 정확한 코드 검색을 위해 검색 API를 사용할 수 있습니다.
고급 검색 또는 기본 검색을 사용하려면
검색 유형 지정을 참조하세요.

기본적으로 Zoekt 검색 API는 변경 사항을 방지하기 위해 GitLab.com에서 비활성화되어 있습니다.
이 기능에 대한 액세스를 요청하려면 GitLab에 문의하세요.

전역 코드 검색

  • GitLab 16.11에서 zoekt_cross_namespace_search라는 플래그와 함께 도입되었습니다. 기본적으로 비활성화되어 있습니다.

이 기능의 사용 가능성은 기능 플래그에 의해 제어됩니다.
자세한 내용은 기록을 참조하세요.
이 기능은 테스트용으로 사용할 수 있지만, 프로덕션 사용을 위해 준비되지 않았습니다.

이 기능을 사용하여 전체 GitLab 인스턴스에서 코드를 검색할 수 있습니다.

전역 코드 검색은 대규모 GitLab 인스턴스에서 성능이 좋지 않습니다.
이 기능이 20,000개 이상의 프로젝트를 가진 인스턴스에 대해 활성화되면,
검색 시 타임아웃이 발생할 수 있습니다.

검색 모드

  • GitLab 16.8에서 zoekt_exact_search라는 플래그와 함께 도입됨. 기본적으로 비활성화됨.
  • GitLab 17.3에서 일반 제공. 기능 플래그 zoekt_exact_search 제거됨.

GitLab에는 두 가지 검색 모드가 있습니다:

  • 정확 일치 모드: 쿼리와 정확히 일치하는 결과를 반환합니다.
  • 정규 표현식 모드: 정규 및 불리언 표현식을 지원합니다.

정확 일치 모드는 기본적으로 사용됩니다.

정규 표현식 모드로 전환하려면, 검색 상자 오른쪽에서 정규 표현식 사용( )을 선택하십시오.

구문

이 표는 정확 일치 및 정규 표현식 모드에 대한 몇 가지 쿼리 예시를 보여줍니다.

쿼리 정확 일치 모드 정규 표현식 모드
"foo" "foo" foo
foo file:^doc/ /doc로 시작하는 디렉토리 내의 foo /doc로 시작하는 디렉토리 내의 foo
"class foo" "class foo" class foo
class foo class foo classfoo
foo or bar foo or bar foo 또는 bar
class Foo class Foo (대소문자 구분 안 함) class (대소문자 구분 안 함) 및 Foo (대소문자 구분 함)
class Foo case:yes class Foo (대소문자 구분 함) classFoo (모두 대소문자 구분 함)
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 (정규 표현식)
sym:foo 클래스, 메서드 및 변수 이름과 같은 기호 내의 foo 클래스, 메서드 및 변수 이름과 같은 기호 내의 foo

알려진 문제

  • 크기가 1MB 미만인 파일과 20_000 미만의 트라이그램만 검색할 수 있습니다. 자세한 내용은 이슈 455073을 참조하세요.
  • 프로젝트의 기본 브랜치에서만 정확 코드 검색을 사용할 수 있습니다. 자세한 내용은 이슈 403307을 참조하세요.