InfoGrab Docs

정확한 코드 검색 개발 가이드라인

정확한 코드 검색 개발 가이드라인에 대해 설명합니다.

이 페이지는 Zoekt로 구동되는 정확한 코드 검색을 개발하고 사용하는 방법에 대한 정보를 포함합니다. 정확한 코드 검색을 활성화하고 초기 인덱싱을 수행하는 방법은 통합 문서 를 참조하세요. 개발 환경 설정 # 개발 환경을 설정하려면: GDK에서 Zoekt 활성화 및 구성 . GDK에서 두 개의 gitlab-zoekt-indexer 와 두 개의 gitlab-zoekt-webserver 프로세스가 실행 중인지 확인합니다: gdk status Zoekt의 로그를 실시간으로 보려면 이 명령을 실행합니다: tail -f log/zoekt.log Rake 태스크 # gitlab:zoekt:info : 정확한 코드 검색, Zoekt 노드, 인덱싱 상태 및 피처 플래그 상태에 대한 정보를 출력합니다. 노드 또는 인덱싱 문제를 디버그하는 데 사용합니다. bin/rake "gitlab:zoekt:info[10]" : 감시 모드에서 태스크를 실행합니다. 초기 인덱싱 중 진행 상황을 모니터링하는 데 사용합니다. 디버깅 및 문제 해결 # Zoekt 쿼리 디버그 # ZOEKT_CLIENT_DEBUG 환경 변수는 개발 또는 테스트 환경에서 Zoekt 클라이언트의 디버그 옵션 을 활성화합니다. 요청은 log/zoekt.log 파일에 기록됩니다. 스펙 실행 또는 Rails 콘솔 시작 전에 코드나 테스트에서 Zoekt 웹서버용으로 생성된 HTTP 쿼리를 디버그하려면: ZOEKT_CLIENT_DEBUG=1 bundle exec rspec ee/spec/services/ee/search/group_service_blob_and_commit_visibility_spec.rb export ZOEKT_CLIENT_DEBUG=1 rails console Zoekt 웹서버에 직접 요청 보내기 # 개발 환경에서 두 개의 인덱서(포트 6080 및 6081 )와 두 개의 웹서버(포트 6090 및 6091 ) 프로세스가 시작됩니다. 두 포트 중 하나를 사용하여 웹서버(테스트 웹서버 포함)에 직접 검색 요청을 보낼 수 있습니다: Rails 콘솔을 열고 만료되지 않는 JWT를 생성합니다 (프로덕션 또는 테스트 환경에서는 절대 수행해서는 안 됩니다): ::Search::Zoekt::JwtAuth::ZOEKT_JWT_SKIP_EXPIRY=true; ::Search::Zoekt::JwtAuth.authorization_header => "Bearer YOUR_JWT" JWT를 사용하여 Zoekt 웹서버 중 하나에 요청을 보냅니다. JSON 요청에는 다음 필드가 포함됩니다: version - 웹서버가 요청을 처리하는 방법에 대한 결정을 내리는 데 사용하는 값 timeout - 검색 요청이 시간 초과되기 전의 시간 num_context_lines - Zoekt API의 NumContextLines 에 매핑 max_file_match_window - 결과 집계 중 파일 매치에 대한 조기 종료 한계(후처리 전용). 여러 검색 노드에서 결과를 결합할 때 전체 파일 수가 이 임계값에 도달하면 검색을 조기에