개요
Acrobat Sign을 사용하면 복합 검색을 통해 사용자 계약 콘텐츠를 찾을 수 있습니다. 관리 페이지의 검색 막대는 선택한 콘텐츠 소스에 대해 제공된 문자열과 일치하는 모든 트랜잭션을 반환합니다.
- "계약"을 보고 있는 경우 콘텐츠를 검색합니다. 공유 계정을 보고 있는 경우 공유 계정의 콘텐츠를 검색합니다.
아래 필드의 콘텐츠는 트랜잭션이 생성/업데이트될 때 인덱스화됩니다.
- 제목 - 계약 제목.
- 메모 - 참가자가 남긴 개인 계약 메모로, 다른 사람에게 보이지 않습니다.
- 메시지 - 이 참가자에게 표시되는 메시지 목록(공용 및 개인 메시지 포함).
- 원본 파일 이름 - 계약과 연결된 업로드된 파일의 원본 이름.
- 이메일 - 수신자(숨은 참조 포함) 또는 발신자의 이메일 주소.
- 성명 – 수신자(숨은 참조 포함) 또는 발신자의 이름과 성.
- 직책 – 수신자(숨은 참조 포함) 또는 발신자의 회사 내 직책.
- 회사 이름 – 수신자(숨은 참조 포함) 또는 발신자의 회사 또는 조직 이름.
- 수신자 그룹 이름 – 수신자가 속할 수 있는 임시 계약 그룹의 이름.
- 텍스트 필드 내용 - 양식에 사용자가 제공하는 텍스트 필드 내용.
- 공유자의 이름 - 계약 공유자의 이름. 공유하지 않는 경우 이것은 사용자의 이름입니다.
- 공유자의 수신자 그룹 이름 - 계약 공유자의 수신자 그룹 이름. 공유하지 않는 경우 이는 사용자의 수신자 그룹 이름입니다.
- 외부 ID - 임의 형식으로, 보통 "<groupID>:<ID>" 형식으로 발신자가 계약에 할당하는 ID. 외부 ID는 계약 생성 API에 대한 호출로 전달됩니다.
- 외부 그룹 ID - 임의 형식으로 발신자가 계약에 할당하는 그룹 ID로, 보통 외부 ID의 접두어로 사용됩니다. 외부 그룹 ID는 계약 생성 API에 대한 호출로 전달됩니다. 외부 그룹 ID 매개 변수를 설정하는 경우 외부 ID를 설정해야 합니다.
- 트랜잭션 ID - 생성 시 Acrobat Sign이 계약에 할당한 ID입니다.
텍스트 검색 작동 방식
"A simple fish" 문자열을 검색하려는 경우
- Acrobat Sign은 공백을 구분 기호로 사용하여 문자열을 "토큰화"합니다. 위의 예제 문자열은 A, simple 및 fish의 세 개 토큰으로 나뉩니다.
- 문자열 쿼리의 문자는 문자, 숫자, 구분자의 세 가지 유형 중 하나에 속합니다.
- 구분자로 취급되는 문자(공백 제외): ~ ` ! @ # $ % ^ & * ( ) - + = { } [ ] | \ . , : ; " ' < > ? /
- 마침표, 밑줄 및 아포스트로피는 해당 기호의 앞과 뒤에 있는 문자가 동일한 유형인 경우 토큰의 부분으로 남아 있습니다.
- 전체 쿼리 문자열을 둘러싸는 따옴표는 구분자가 아니고 리터럴 문자열 값(구문)을 지정합니다.
- 쿼리 문자열 안에 있는 따옴표는 구분자이고 리터럴 문자열 값을 지정하지 않습니다..
- 대소문자 구분은 제거됩니다. 예: a, simple 및 fish
- 검색한 다음 각 토큰의 전체 텍스트를 색인된 값과 일치시킵니다.
- 계약 제목(아래 참조)에 대한 보다 복잡한 토큰화가 수행됩니다.
- 포함 검색이 사용되었습니다. 즉, 하나 이상의 검색 가능 필드에서 하나 이상의 토큰과 일치하는 모든 계약이 반환된 데이터 집합에 포함됨을 의미합니다.
- 반환된 데이터 집합은 가장 관련이 많은 검색 결과가 맨 위에 있는 방식으로 연관성 점수를 기준으로 정렬됩니다.
계약 제목 필드
위의 설명과 같이, 컨텍스트 구분 문자(vs 명시적 문자)를 주로 토큰화하는 추가적인 "사용자 지정" 토크나이저로 인해 계약 제목 필드의 토큰은 보다 복잡하게 수행됩니다. 이러한 사용자 정의 토크나이저는 다음과 같은 점에서 표준과 다릅니다.
- 접두사 토큰(최대 10자)이 생성됩니다. 접두사 토큰은 표준 토큰의 증분 문자열입니다. 예를 들어, 표준 토큰이 fish인 경우, 증분 토큰은 f, fi, fis 및 fish입니다.
- 이러한 방식으로 토큰의 첫 번째 문자부터 시작하여 부분 문자열을 검색할 수 있습니다.
- 중간 문자열 일치는 무시됩니다. 예를 들어, rent를 검색하는 경우 단어 apparently는 일치하지 않습니다.
- 영숫자가 아닌 문자에서 토큰을 분할합니다. 예를 들어, 문자열 Super_Duper는 Super 및 Duper를 생성합니다.
- 밑줄은 표준 토크나이저에서 구분 기호가 아닙니다.
- 대소문자 상태 전이에서 토큰을 분할합니다. 예를 들어. 문자열 PowerShot은 토큰 Power 및 Shot을 생성합니다.
- 문자-숫자 상태 전이에서 토큰을 분할합니다. 예를 들어, 문자열 XL500은 토큰 XL 및 500을 생성합니다.
- 각 토큰에서 선행 또는 후행 구분 기호를 제거합니다. 예를 들어, 문자열 XL---42+'Autocoder'는 토큰 XL, 42 및 Autocoder를 생성합니다.
- 각 토큰의 끝에서 영어 소유격('s)을 제거합니다. 예를 들어, 문자열 Dave's는 토큰 Dave를 생성합니다.
표준 및 사용자 정의 토크나이저를 조합하면 전체 토큰 문자열(표준 토크나이저 사용) 및 접두사 토큰(사용자 정의 토크나이저 사용)을 검색할 수 있습니다. 그러나 구분 기호가 포함된 접두사 토큰은 일치하지 않습니다.
예: 계약 이름이 My_NDA인 경우
- 표준 토크나이저는 my_nda와 같은 토큰을 생성합니다.
- 사용자 정의 토크나이저는 m, my, n, nd, nda, my_, my_n, my_nd, my_nda와 같은 일련의 토큰을 생성합니다.
예 2: 계약 이름이 XL500인 경우
- 표준 토크나이저는 xl500과 같은 토큰을 생성합니다.
- 사용자 정의 토크나이저는 xl500, x, xl, 5, 50, 500, xl5, xl50과 같은 일련의 토큰을 생성합니다.
특수 쿼리 구문으로 검색
위 섹션에서 설명한 바와 같이 계약 검색은 계약의 모든 검색 가능한 필드에서 근사 일치를 수행합니다. 검색 가능 필드 내용은 토큰화되고, 그런 다음 이러한 토큰이 쿼리 시 쿼리 문자열과 일치합니다. 또한 계약 검색은 이러한 토큰에 대해 최대 10자의 접두어 일치를 수행합니다. 계약에 일치하는 토큰이 하나 이상 있으면 해당 계약이 검색 결과에 표시됩니다. 검색 결과는 가장 관련이 많은 검색 결과가 맨 위에 있는 방식으로 연관성 점수를 기준으로 정렬됩니다.
그러나, 전체 필드 값 일치, 필드 값의 구문 일치, 특정 토큰이 포함되지 않은 계약 검색, 여러 토큰이 동시에 포함된 계약 검색(구문이 아님)은 특수 구문으로만 수행할 수 있습니다. SGQL(Sign Generic Query Language)은 특수 구문이 필요한 이러한 기능에 대한 고객의 요구를 해결하기 위해 개발되었습니다.
예약된 문자 및 단어
SGQL에는 7개의 예약된 문자가 있습니다.
* ( ) \ " ' : |
---|
이러한 예약된 문자는 연산자로 사용되며 검색 쿼리에서 언어 기능을 정의합니다. 예약된 문자를 잘못 사용하면 구문 오류가 반환됩니다.
검색 쿼리에서 예약된 문자를 일반 문자로 사용하려면 이스케이프 처리해야 합니다. 예를 들어, 다음 검색 쿼리는
\( \"bea\:u\*ful\"\\ \) |
---|
모든 예약된 문자를 이스케이프 처리하고 일반 문자로 취급합니다.
SGQL에는 연산자를 위한 3개의 예약된 단어도 있습니다.
AND OR NOT |
---|
연산자는 반드시 대문자여야 합니다. 검색 쿼리에서 연산자를 일반 토큰으로 사용하려면 큰따옴표로 묶어야 합니다. 예를 들면 다음과 같습니다.
foo "AND" bar |
---|
구문 일치
토큰이 필드에 나타나는 경우(반드시 모든 토큰이 나타날 필요는 없음) 일반 근사 일치 쿼리가 일치하고, 토큰이 함께 나타날 필요가 없으므로 토큰 순서는 상관 없습니다.
하나 이상의 검색 가능한 모든 필드에서 대소문자를 구분하지 않고 정확한 구문 검색이 필요한 경우 구문 일치 쿼리를 사용해야 합니다. 이를 통해 여러 토큰이 동일한 필드에 나타나는 경우 일치시킬 수 있고, 이러한 토큰은 따옴표 내 지정된 순서대로 차례로 나타납니다.
구문 일치 쿼리 구문 형식:
"<phrase_match_query>" |
---|
또는
'<phrase_match_query>' |
---|
쿼리 구문이 구문 일치 쿼리 구문에 대한 규칙을 따르지 않는 경우에는 검색에서 검색 가능한 모든 필드 간에 일반 근사 일치 쿼리를 수행합니다.
예를 들어,
"Study Group" |
---|
쿼리는 검색할 수 있는 필드 중 하나에서 "study group" 구문이 포함된 계약과 일치합니다. "study - group"이라는 구문은 "study group"과 비교할 때 대소문자를 구분하지 않는 정확한 구문이 아니므로 이 쿼리와 일치하지 않습니다.
구문 일치는 검색 쿼리 내의 모든 위치에 나타날 수 있습니다. 예를 들면 다음과 같습니다.
title: ( math AND "course materials" AND "study group" ) |
---|
이 제목에는 "MATH"라는 키워드와 "Course Materials", "Study Group"이라는 구문이 들어 있어서 "Course materials for MATH 101 Study Group"이라는 제목과 일치합니다.
필드 이름 접두어
사용자 계약의 특정 필드 하나만 검색할 때 필드 이름 접두어 쿼리를 사용해야 합니다.
필드 이름 접두어 쿼리에는 필드 이름 접두어와 그 뒤에 검색 쿼리가 와야 합니다. 필드 이름 접두어 쿼리 구문 형식:
<field_name>:<query> |
---|
필드 이름 접두어는 토큰의 앞이나 쿼리의 괄호 부분 앞에 나타날 수 있습니다. 예를 들어, 다음 검색 쿼리에서
title: ( Hello AND "Beautiful World" AND "My World" ) |
---|
모든 토큰은 계약 제목 필드와 일치합니다.
아래 검색 쿼리에서
title: Hello AND "Beautiful World" AND "My World" |
---|
'Hello'라는 단어에만 필드 이름 접두어가 있으며 이 단어는 계약 제목 필드하고만 일치합니다. 나머지 단어와 구문은 검색 가능한 모든 필드와 일치합니다.
<field_name>을 지정하지 않으면 해당 구문 일치에 대해 지원되는 모든 필드가 쿼리됩니다. 그렇지 않으면, <field_name> 필드만 쿼리됩니다.
쿼리 구문이 필드 이름 접두어 쿼리 구문에 대한 규칙을 따르지 않는 경우 계약 검색은 전체 쿼리를 검색 쿼리로 사용하고 검색 가능한 모든 필드에서 검색을 수행합니다.
예를 들어, 다음 필드 이름 접두어 쿼리에서
title: ( Hello World ) |
---|
계약의 제목을 포함하는 필드에 대해서만 검색을 수행합니다.
다음은 필드 이름 접두어 쿼리에 지원되는 접두어 목록입니다. 필드 이름 접두어는 대소문자를 구분하지 않습니다.
필드 내용 |
문자열 쿼리 필드 이름 접두어 |
필드 내용 설명 |
직함 |
title* |
계약 제목. |
메모 |
note |
참가자가 남긴 개인 계약 메모로, 다른 사람에게 보이지 않습니다. |
메시지 |
message |
이 참가자에게 표시되는 메시지 목록(공용 및 개인 메시지 모두 포함). |
원본 파일 이름 |
originalFileName |
계약과 연결된 업로드된 파일의 원본 이름. |
이메일 |
email** |
수신자(숨은 참조 포함) 또는 발신자의 이메일 주소. |
성명 |
fullName*** |
수신자(숨은 참조 포함) 또는 발신자의 이름과 성. |
직책 |
jobTitle |
수신자(숨은 참조 포함) 또는 발신자의 회사 내 직책. |
회사 이름 |
companyName |
수신자(숨은 참조 포함) 또는 발신자의 회사 또는 조직 이름. |
수신자 그룹 이름 | recipientGroupName |
수신자가 속할 수 있는 임시 계약 그룹의 이름. |
텍스트 필드 내용 | textFieldContent |
양식에서 사용자가 제공하는 텍스트 필드 내용. |
공유자의 성명 | sharerFullName | 계약 공유자의 성명. 공유하지 않는 경우 이것은 사용자의 이름입니다. |
공유자의 수신자 그룹 이름 | sharerRecipientGroupName | 계약 공유자의 수신자 그룹 이름. 공유하지 않는 경우 이는 사용자의 수신자 그룹 이름입니다. |
외부 ID | externalId |
임의 형식으로, 보통 "<groupID>:<ID>" 형식으로 발신자가 계약에 할당하는 ID. 외부 ID는 계약 생성 API에 대한 호출로 전달됩니다. |
외부 그룹 ID | externalGroupId |
임의 형식으로 발신자가 계약에 할당하는 그룹 ID로, 보통 외부 ID의 접두어로 사용됩니다. 외부 그룹 ID는 계약 생성 API에 대한 호출로 전달됩니다. 외부 그룹 ID 매개 변수를 설정하는 경우 외부 ID를 설정해야 합니다. |
트랜잭션 ID | agreementId | 계약서가 생성될 때 Acrobat Sign에 의해 계약서에 할당된 ID입니다. |
역방향 호환성을 위해, 일부 필드 이름 접두어는 원래 필드 이름 접두어와 기능상 동등한 별칭을 가집니다. 이러한 별칭은 사용되지 않고 결국 제거됩니다.
* 필드 이름 접두어 'name'이 'title' 대신 사용될 수 있습니다.
** 필드 이름 접두어 'participantEmail'이 'email' 대신 사용될 수 있습니다.
*** 필드 이름 접두어 'participantName'이 'fullName' 대신 사용될 수 있습니다.
와일드카드
와일드카드(별표 *)를 사용하여 접두사 일치 후 토큰에 문자를 무제한으로 사용할 수 있습니다. 와일드카드 확장은 런타임에서 발생하는 많은 리소스를 소모하는 작업이므로 이 기능을 사용하려면 다음 구문 규칙을 따라야 합니다.
- 선행 와일드카드는 허용되지 않습니다.
- 토큰 중간의 와일드카드는 허용되지 않습니다.
- 와일드카드 확장 연산자가 있는 토큰에는 필드 이름 접두어가 필요합니다.
- 와일드카드 연산자는 쿼리에서 두 번 이상 사용할 수 없습니다.
- 와일드카드 확장을 포함하는 쿼리는 실행 시간이 5초를 초과하면 시간 초과 오류를 반환합니다.
예를 들어, 다음 쿼리는
title:myh* |
---|
다음 제목 필드 토큰과 일치합니다.
myhost |
---|
및
와일드카드 확장은 많은 리소스를 소모하는 작업입니다. 바람직하지 않게 사용하면 시스템 리소스가 많이 소모되며 검색 결과가 표시될 때까지 긴 시간이 걸릴 수 있습니다. 이러한 문제를 방지하기 위해 SGQL에는 리소스 소모가 많은 고비용 사용 사례를 제거하는 와일드카드 사용에 대한 제한이 있습니다. 토큰이 구체적일수록 검색 효율성이 높아집니다. 특정 단어나 구문을 검색하는 것이 와일드카드를 사용하는 검색보다 항상 효율적입니다.
부울 표현식
SGQL은 AND, OR, NOT과 같은 부울 연산자를 지원하며 괄호를 사용하여 이러한 연산자를 그룹화합니다. 연산자는 반드시 대문자여야 합니다.
OR 연산자는 항상 토큰 사이에 포함됩니다. 예를 들면 다음과 같습니다.
foo bar |
---|
다음과 동일합니다.
foo OR bar |
---|
명확성을 위해 OR 연산자를 포함하려는 경우가 아니면 지정할 필요가 없습니다.
NOT 연산자는 NOT 바로 다음에 있는 토큰에만 적용됩니다. NOT 연산자를 여러 토큰에 적용하려면 해당 토큰을 괄호로 묶어야 합니다.
다음 표에서는 부울 표현식이 계산되는 순서를 설명합니다.
순서 |
검색 명령 |
---|---|
1 | 괄호 안의 표현식 |
2 | NOT 절 |
3 | OR 절 |
4 | AND 절 |
아래 표에서 그룹화 연산자(괄호)가 제공되지 않은 경우 연산자 우선 순위를 설명하는 의미상 동등한 쿼리의 예를 확인할 수 있습니다.
검색 쿼리 | 다시 작성된 동등한 검색 쿼리 | 설명 |
---|---|---|
foo AND bar baz | foo AND ( bar OR baz ) | OR 연산자는 암시적이므로 명확성을 위해 추가하려는 경우가 아니면 사용해서는 안 됩니다. |
foo NOT bar baz | foo OR ( NOT bar ) OR baz | NOT 연산자는 다음 토큰이나 쿼리의 괄호 부분에 적용됩니다. |
foo NOT bar baz AND xyz | ( foo OR ( NOT bar ) OR baz ) AND xyz | |
title: ( Hello AND "Beautiful World" "My World" ) | title:Hello AND ( title:"Beautiful World" OR title:"My World" ) | 필드 이름 접두어는 다음 토큰이나 쿼리의 괄호 부분에 적용됩니다. |
title: Hello AND note: "Beautiful World" "My World" | title:Hello AND ( note:"Beautiful World" OR "My World" ) | "My World" 구문은 검색 가능한 모든 필드와 일치합니다. |