5 lines
7.8 KiB
JavaScript
5 lines
7.8 KiB
JavaScript
const p=s=>'<p>'+s+'</p>';const ul=xs=>'<ul>'+xs.map(s=>'<li>'+s+'</li>').join('')+'</ul>';
|
|
export default {
|
|
169:({a,img,pre})=>p(img(0,'노트 검색 화면'))+p('제목과 본문 및 '+a(0,'속성')+'을 검색합니다. 검색 조건을 저장하면 트리에 검색 노트가 생기고 결과가 하위 항목으로 나타납니다.')+'<h2>검색 열기</h2>'+p(a(1,'실행 도구 모음')+'의 검색 버튼을 누릅니다. 특정 하위 트리만 찾으려면 '+a(2,'노트 트리 메뉴')+'의 하위 트리에서 검색 또는 Ctrl+Shift+S를 사용합니다. '+a(3,'단축키')+'로도 검색 화면을 열 수 있습니다.')+'<h2>사용 방법</h2>'+p('검색어를 입력합니다. 일반 단어뿐 아니라 속성과 노트 정보로 조건을 지정할 수 있습니다. 상위 노트를 지정하면 해당 노트와 하위 항목만 찾습니다. '+a(4,'확대해서 보는 노트')+'나 '+a(5,'작업 공간')+'에서 열면 이 값이 미리 채워질 수 있습니다. 전체를 검색하려면 비웁니다. 깊이로 탐색할 하위 단계를 제한할 수 있습니다.')+p('검색을 누르면 아래에 결과가 표시됩니다. 작업을 추가한 경우에는 검색 후 작업 실행 버튼을 사용할 수 있습니다. 노트로 저장은 조건을 '+a(6,'저장된 검색')+' 노트로 만듭니다.')+'<h2>검색 옵션</h2>'+p('검색 옵션 추가에서 항목을 선택하고 세부 값을 지정합니다. 오른쪽 X로 제거합니다.')+ul(['검색 스크립트 — 직접 검색을 처리할 '+a(7,'코드 노트')+'를 지정합니다.','빠른 검색 — 본문을 제외하고 제목과 조건에 지정한 속성·관계를 검색합니다. 큰 '+a(8,'데이터베이스')+'에서 속도를 높일 수 있습니다.','보관된 노트 포함 — 평소 제외하는 '+a(9,'보관된 노트')+'도 찾습니다.','정렬 기준 — 관련성 대신 만든 날짜나 제목 등을 사용합니다. 오름차순과 내림차순도 지정합니다.','결과 수 제한 — 최대 개수를 지정합니다. 제한을 넘는 결과는 표시되지 않습니다.','디버그 — 검색식을 해석한 정보를 서버 '+a(10,'로그')+'에 기록합니다. 복잡한 조건의 문제를 분석할 때 사용합니다.','작업 — 검색 결과에 라벨이나 관계 추가 등을 적용합니다. 같은 종류를 여러 번 추가할 수 있습니다. '+a(11,'일괄 작업')+'과 같은 동작을 제공하며 '+a(12,'노트 트리')+'에서 직접 대상을 고르는 대신 검색 결과를 사용합니다. 먼저 검색으로 대상을 확인한 뒤 검색 후 작업 실행을 누르세요.'])+'<h2>기본 검색 예제</h2>'+ul(['<code>반지 톨킨</code> — 두 단어가 모두 있는 노트를 찾습니다.','<code>"반지의 제왕" 톨킨</code> — 따옴표 안의 문구는 그대로 일치해야 합니다.','<code>note.content *=* 반지 OR note.content *=* 톨킨</code> — 본문에 둘 중 하나가 있는 노트를 찾습니다.','<code>탑 #book</code> — 탑이라는 단어와 <code>book</code> 라벨이 모두 있어야 합니다.','<code>탑 #book or #author</code> — 탑이라는 단어가 있고 두 라벨 중 하나가 있어야 합니다.','<code>탑 #!book</code> — 탑이라는 단어가 있으면서 <code>book</code> 라벨은 없는 노트입니다.','<code>#book #publicationYear = 1954</code> — 책 라벨이 있고 출판 연도 값이 1954인 노트입니다.','<code>#genre *=* 판타지</code> — 장르 값에 판타지가 포함된 노트입니다. <code>*=*</code>는 포함하며 <code>=*</code>는 시작하고 <code>*=</code>는 끝나는 조건입니다. <code>!=</code>는 같지 않음입니다.','<code>#book #publicationYear >= 1950 #publicationYear < 1960</code> — 1950년대에 출판된 책을 찾습니다.','<code>#dateNote >= TODAY-30</code> — 30일 전 이후의 날짜 노트를 찾습니다. 상대값은 초 단위 <code>NOW</code>와 일 단위 <code>TODAY</code> 및 월 단위 <code>MONTH</code>와 연 단위 <code>YEAR</code>를 지원합니다.','<code>~author.title *=* 톨킨</code> — 저자 관계의 대상 제목에 톨킨이 포함된 노트를 찾습니다.','<code>#publicationYear %= \'19[0-9]{2}\'</code> — 정규식으로 출판 연도를 검색합니다. 이 기능은 0.52부터 지원합니다.'])+'<h2>고급 예제</h2>'+p('<code>~author.relations.son.title = \'크리스토퍼 톨킨\'</code>은 저자 관계를 따라간 노트에서 다시 <code>son</code> 관계를 따라갔을 때 제목이 일치하는 노트를 찾습니다. 예를 들어 책의 <code>author</code>가 J. R. R. 톨킨을 가리키고 그 노트의 <code>son</code>이 크리스토퍼 톨킨을 가리키는 구조입니다.')+p('<code>~author.title *= 톨킨 OR (#publicationDate >= 1954 AND #publicationDate <= 1960)</code>처럼 논리 연산과 괄호를 사용할 수 있습니다. 식 전체가 괄호로 시작할 때는 앞에 <code>#</code> 또는 <code>~</code> 구분자가 필요합니다.')+ul(['<code>note.parents.title = \'책\'</code> — 바로 위 노트 제목이 책인 항목','<code>note.parents.parents.title = \'책\'</code> — 두 단계 위 노트 제목이 책인 항목','<code>note.ancestors.title = \'책\'</code> — 상위 경로에 책이라는 노트가 있는 항목','<code>note.children.title = \'하위 노트\'</code> — 지정한 제목의 하위 노트가 있는 항목'])+'<h2>노트 정보로 검색</h2>'+p('<code>note.</code> 뒤에 속성명을 붙입니다. 예: <code>note.type = code AND note.mime = \'application/json\'</code>. 사용할 수 있는 정보는 다음과 같습니다.')+p('<code>noteId dateModified dateCreated isProtected type title text content rawContent ownedLabelCount labelCount ownedRelationCount relationCount ownedRelationCountIncludingLinks relationCountIncludingLinks ownedAttributeCount attributeCount targetRelationCount targetRelationCountIncludingLinks parentCount childrenCount isArchived contentSize noteSize revisionCount</code>')+'<h3>정렬과 결과 수 제한</h3>'+pre(0).replace('Tolkien','톨킨')+p('저자 라벨 값이 톨킨인 노트를 찾아 출판 날짜 내림차순으로 정렬합니다. 날짜가 같으면 제목을 기준으로 정렬하고 처음 10개만 표시합니다.')+'<h3>부정 조건</h3>'+pre(1).replace('note.ancestor.title','note.ancestors.title').replace('Tolkien','톨킨')+p('톨킨이라는 노트의 하위 트리에 속하지 않는 책 노트를 찾습니다.')+'<h2>검색식의 구성</h2>'+p('라벨과 관계의 전체 문법은 다음과 같습니다.')+pre(2)+pre(3).replace('Tolkien','톨킨')+p('자주 사용하는 형태는 짧게 쓸 수 있습니다.')+pre(4).replace('#author.title','~author.title').replace('Tolkien','톨킨')+'<h3>본문 검색과 속성 검색의 구분</h3>'+p('<code>톨킨 #book</code>에서 톨킨은 본문 검색어이고 <code>#book</code>은 속성 조건입니다. <code>#</code>와 <code>~</code> 및 <code>note.</code> 같은 문법으로 구분합니다. 일반 텍스트로 찾으려면 따옴표로 감싸거나 역슬래시로 이스케이프합니다.')+pre(5).replace('Say "Hello World"','"안녕하세요"라고 말하기')+'<h3>특수문자와 따옴표</h3>'+p('작은따옴표와 큰따옴표 및 백틱을 지원합니다.')+pre(6).replace('Say "Hello World"','"안녕하세요"라고 말하기')+'<h3>값의 형 변환</h3>'+p('라벨은 문자열로 저장되지만 숫자 비교 연산에서는 숫자로 변환합니다. 다음 예제는 만든 날짜가 2019년 5월로 시작하는 노트를 찾습니다.')+pre(7)+p('<code>#publicationYear >= 1960</code>은 출판 연도를 숫자로 비교합니다.')+'<h2>URL로 검색 실행</h2>'+p('검색어를 '+a(13,'URL 인코딩')+'한 뒤 주소에 넣으면 앱을 열면서 검색할 수 있습니다. 예: <code>http://localhost:8080/#?searchString=abc</code>')
|
|
};
|