도움말:검색/수정
Help:Searching/Regex
인덱싱된 검색
첫째, 모든 페이지는 검색엔진에 의해 스캔된다.위키 전체가 검색 색인만을 위해 구축된 별도의 데이터베이스에 보관되는 하나의 "전체 텍스트"로 취급된다.책 속의 색인 같지만, 사실상 모든 단어와 숫자가 모든 페이지에 색인화되어 있다.[1]
미리 작성된 검색 색인에서 각 단어는 이미 해당 단어가 포함된 페이지를 가리키기 때문에, 대부분의 검색어는 실제로 해당 색인에서 단일 레코드 검색입니다.(이것은 어느 정도 구문에도 해당된다.)
에 대해 업데이트된 개별 인덱스가 있음
- 직함
- 시각적 내용
- 위키텍스트
- 템플릿
각 템플릿 출력이 변환되는 모든 페이지에 색인화된 모든 단어.즉, 템플릿에 의해 변환된 모든 텍스트는 대상 페이지로 색인화된다.[2]"인덱스 검색"은 기본적으로 실행하는 데 시간이 걸리지 않는다.그것들은 싸고 풍부하다.
검색 인덱스 작성 및 유지관리는 거의 실시간으로 백그라운드에서 이루어진다.페이지를 저장하면 몇 초 후에 방금 변경한 내용을 검색할 수 있다.많은 페이지로 변환되는 템플리트의 경우, 변경사항을 모든 페이지 색인 항목으로 전달하는 데 1분이 걸릴 수 있다.
인덱스는 영숫자를 기반으로 하며, 영숫자가 아닌 문자에 대한 정보는 저장하지 않는다.색인화된 검색은 구두점, 괄호, 수학 및 기타 키보드의 기호 문자를 요구할 수 있지만 경고 없이 무시된다.이제 당신은 왜 검색 인덱스가 그렇게 빠른지 이해하게 되었다.
각 regex 검색에는 10,000페이지 미만의 검색 도메인을 제공하기 위해 인덱싱된 검색 필터가 필요하다.
인덱싱된 검색
기본 인덱스 검색
- 문서 공간만 검색하십시오.그것이 디폴트다.
- 문자와 숫자만 일치시킨다.이것은 보통 문제가 아니다.
- 기본적으로 모든 공공 검색 엔진에 대해 동일한 방식으로 작동한다.당신은 보통 페이지 순위 소프트웨어에 의존하여 당신이 찾고 있는 정보를 검색 결과의 최상단 근처에서 찾을 수 있다.
- 많은 검색 결과를 얻는다.당신은 페이지 순위 규칙에 크게 의존하고 있다.그런 다음 최상위 페이지를 기준으로 검색 결과를 세분화하십시오.이 작업은 필터가 아닌 필터로 수행되며, 원하지 않는 단어의 앞면에 부착된 마이너스 기호로 표시되어 예상할 수 없었던 페이지 적중 소음을 걸러낸다.이것이 네가 가장 먼저 배우는 것이다.
- 입력하는 각 단어의 모든 형식을 일치시킴으로써 가능한 한 많은 페이지를 포함하는 "문자 관리인"이다.
기본적으로, "검색법"은 단지 핵심 단어일 뿐이고, 이것들은 분명히 알려져 있기 때문에, 왜 사람들이 "검색법"을 배우기를 원하는가?
고급 인덱스 검색
- 일반적인 정보를 찾는 대신 특정 페이지를 대상으로 한다.
- 페이지 순위는 전혀 필요하지 않으며 무수한 결과를 받아들일 수 없다.
- 검색 결과 페이지의 오른쪽에 표시되는 페이지 히트의 양에 대해 염려하십시오.
정규식
정규식은 검색 패턴을 정의하는 문자 시퀀스를 지정하기 위한 특수하지만 작은 언어다.정규식을 줄여서 regex라고 한다.
regex 검색은 실제로 검색 도메인의 각 페이지를 문자별로 검색한다.이와는 대조적으로, 색인화된 검색은 실제로 위키 데이터베이스와 별도로 유지되는 데이터베이스로부터 몇 개의 레코드를 쿼리하고 거의 즉각적인 결과를 제공한다.따라서 insource://(모든 종류의 regexp)를 사용할 때는 regex 검색 도메인을 최대한 제한하는 다른 검색어를 만드는 것을 고려해야 한다.인덱스를 사용하는 검색어가 많으므로 /regexp/에 대해 보다 정교한 검색 도메인을 즉시 제공한다.일반적인 효과의 순서는 다음과 같다.
- slash 또는 이스케이프 문자를 제외하고 regexp를 복제하는 인용 부호가 있는 insource:"는 이상적이다.
- intitle, incategory, linksto는 훌륭한 필터다.
- hastemplate:는 매우 좋은 필터다.
- "word1 word2 word3"는 인용 부호가 있든 없든 좋다.
- 네임스페이스: regex에는 고급 필터지만 regexp 검색이 느린 regexp 검색을 통해 장수를 완료할 수 있다는 점을 제외하면 실질적으로 유용하지 않다.
접두사 연산자는 모든 하위 디렉터리를 자동으로 검색하기 때문에 검색 템플릿, 검색 링크 또는 입력란에 {{FULLPAGENAME}}이(가) 있으면 특히 유용하다.새 regexp를 개발하거나 복잡한 regexp를 구체화하려면prefix:{{FULLPAGENAME}}대상 데이터의 샘플이 있는 페이지에
regexp 검색의 효율성을 높이지 않는 검색어는 페이지 가중치 연산자(더 유사, 부스트 템플레이트 및 선호도)이다.regex 검색의 주요 관심사는 먼저 검색 도메인을 "검색 엔진 쿼리"가 아닌 필터를 사용하는 인덱싱된 검색으로 제한하는 것이다.그런 다음 모든 페이지 문자를 문자별로 검색한다.좁게 정의된 검색 도메인의 각 페이지를 검사한다.
기본 regex 검색
- regexp를 사용하여 문자열을 정확하게 패턴화할 수 있다.
- 가능한 한 많은 페이지를 제외하다
- 각 regexp를 큰따옴표로 인용하여 메타카락터를 해제한다.
고급 regex 검색
- 메타카락터를 사용한다.
- 샌드박스에서 개발됨으로써 얻는 이익
regexp는 문자 그대로 모든 문자와 일치하는 천 개의 단어 또는 regex 메타차박터 언어의 몇 개의 기호 또는 두 개의 조합이 될 수 있다.어떤 키보드에서도 어떤 캐릭터와도 매치할 수 있다.
따라서 Regex는 정확성을 생산하지만 속도가 느리고(비용) 속도를 높이기 위해 필터를 추가(비용 절감)할 책임이 있다.
regex 검색을 개발하려면 사실상 항상 시행착오가 필요하며, 이는 {{regex}}, {{template usage}}}이(가) 지원하는 반복적 개발 프로세스다.가장 쉽게 추가할 수 있는 필터는 네임스페이스, 접두사 또는 슬래시가 제거되지 않은 정규식 복사본이다.이러한 필터는 모두 색인을 사용하여 검색하며 검색하면 훨씬 빠르다.이것은 우리가 regex 검색에 대해 처음 배우는 것 중 하나이다: 필터로 검색에 동행한다.[3]
도메인 크기 검색
- 자동이 아니라 자발적인 것이다.
- 정규식에 대한 접근성 보호
- 가능한 가장 진보된 검색 기능을 개방적으로 사용할 수 있도록 하다.
- HTML 시간 초과를 방지하여 검색이 중단됨
- {{regex}} 개발 샌드박스 생성
- 그들이 필요로 하는 처리 능력만 가지고, 사려깊다.
맨 regex를 실행하는 것은 위키백과:성능에 해를 끼칠 수는 없지만, 기본적인 검색 기법을 적용하지 않고 regex 검색은 다른 regex 검색자들을 제한할 수 있고, 논쟁거리가 될 수 있다.
all: insource "질문 하위 링크" 위키에 있는 페이지 수는?OK. sublinks]]?"/
| 구두점 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 구두점 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 단어 구분자 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 일반 타이포그래피 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 지적 재산. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 흔하지 않은 타이포그래피 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 다른 스크립트에서 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 관련 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
이것은 위키에서 위키백스트 콘텐츠에 대한 질문에 답하기 시작할 수 있는 정규 표현식의 충분한 부분을 다룬다.Regex는 메타 문자를 사용하여 리터럴 문자와 일치하는 패턴을 만드는 것이다.당신이 주는 패턴은 성격에 따라 대상과 일치할 것이다.일부 포지션을 여러 가지 가능성과 일치시키려면 메타캐랙터가 필요하며, 위키텍스트에도 있는 동일한 키보드 문자 출신이다.
메타카락터스
왼쪽 곱슬 브래킷은 메타차박터(metacharctor)이므로 주어진 regexp 패턴은 모든 열린 곱슬 브래킷을 "탈출"해야 한다.\{위키텍스트의 템플리트와 일치시키려 {하는 ""모든 대상 텍스트(모든 Wikitext)는 리터럴 텍스트지만 regex 메타캐랙터들을 "탈출"할 수 있다. \. \? \+ \* \ \{ \[ \] \( \) \" \\ \# \@ \< \~ 우리가 위키에서 그들을 문자 그대로의 캐릭터라고 언급할 때 우리는 채굴에 관심이 있다.검색은 의미가 없거나 불필요한 곳이라면 어디서든 백슬래시를 무시한다.\n성냥 등등.그러니 도망칠 필요까진 없겠지만&또는>또는}그렇게 하는 것은 안전하다.불필요한 백슬래시는 당신의 패턴을 실패하게 하는 것이 아니라, 문자 그대로 특정 문자를 사용하는 것이다. [ ] . * + ? { ( ) " \ # @ < ~
[0-9]모든 숫자와 일치한다.[a-y]z를 제외한 모든 소문자,[zZ]임의의 z(등)그래서 대괄호는 "문자 클래스"를 의미한다.- 도트
.뉴라인 또는 타겟 위치의 모든 문자와 일치함
이러한 기호가 일치하는 순차적 자릿수 또는 문자의 수는 정량화된 메타카락터를 사용하여 다음과 같이 표현된다.
*0 또는 그 이상을 의미한다.+하나 또는 그 이상의 의미?0 또는 1을 의미한다.
그 뒤에 나오는 성질의.일치하는 횟수도 범위 내에서 지정할 수 있으며,a{2} a{2,} a{2,5}정확히 2, 2 또는 그 이상 또는 2-5와 일치한다.그래서 곱슬곱슬한 괄호는 "양자"를 의미한다.
- 괄호는 그룹화 메커니즘이기 때문에 이전 문자보다 더 많은 양을 정량화할 수 있고, 그래서 우리는 일련의 대체 매칭에 대한 경계를 만들 수 있다.(아래 교대 참조)
- 따옴표는 대괄호나 백슬래시와 같은 탈출 메커니즘이다.
- 각 괄호는 숫자가 아니라 숫자를 나타낸다.라고 말하다
<5-799>, 5~799와 1~3개의 포지션으로 매치하기 위해.이 값을 다른 옵션과 비교해 보십시오.[0-9]{1,3}0-999 또는 00-999 또는 000-999와 같은 수 십 또는 수천 개와 일치할 수 있다. - 틸데
~앞을 보고 다음 인물을 부정하다.즉, 패턴이 이 위치에서 일치하면, 다음 문자가 일치하면 불일치를 해제한다.~인격의
외로운 사람을 찾는 것은 안전하지 않다.@그 단일 메타카로터(metacharacter)가 말 그대로 모든 것과 일치하기 때문에, 당신은 사용할 수\@"at" 기호를 사용하는 모든 페이지를 찾으십시오.
마찬가지로 숫자 0을 사용하는 모든 페이지를 찾으면 검색은 오류를 반환하여 단독 0을 검색한다; 다음 세 가지 이스케이프 메커니즘 중 하나를 사용하십시오.0또는@.
"0"\0[0]
아니면 당신이 찾는 0 주위에 더 큰 패턴을 찾을 수 있다.비록 0이 메타카박터는 아니지만, 이러한 탈출 메커니즘은 효과가 있다.
위키리겔스의 나머지 부분은 꽤 간단하다.캐릭터는 메타캐릭터가 아닌 이상 자신을 상징한다.만약 그들이 메타캐릭터라면 그들은 캐릭터 클래스 밖에서 탈출한다.
캐릭터 클래스
문자 클래스는 "문학적인 문자"를 의미하며, 복수형을 의미한다.그것은 "문학"을 의미하고, 그래서 보통 캐릭터 수업에서 메타카락터 캐릭터를 벗어날 필요가 없다; 그것들은 이미 네모난 벽돌로 만들어진 것이다./slash 구분 기호/는 물론 문자 클래스 안에서도 슬래시 문자를 피해야 함을 의미한다.문자 클래스에서 슬래시를 제외한 다른 문자는 항상 이스케이프가 필요하지만, 그 이유는]그리고-캐릭터 클래스에 특별한 의미(메타카락터)를 가지고 있는데, 그들은 때때로 탈출해야 한다: 그 둘은 또한 문자 그대로의 메타카락터(metacharactor)이며, 그들이 첫 번째 캐릭터라면 탈출해야 한다. 그러나 그렇지 않으면 그들은 또한 대시처럼 탈출해야 한다: 캐릭터 클래스에서 백슬래쉬-슬래쉬만이 탈출 메커니즘으로 작용한다.
캐릭터 수업은 메타캐릭터들을 탈출시키는 역할을 할 수 있다.[- *\/.{\]]또는[] *\/.{\-]"대시 OR 파이프 또는 별 또는 슬래시 OR 도트 또는 왼쪽 곱슬 브래킷 또는 오른쪽 사각 브래킷"을 의미한다.그렇게[][.?+* \/{}()\-]"또는[-[.?+* \/{}()\]]"위키텍스트에 있는 메타캐랙터들, 백슬래시를 제외한 모든 메타캐랙터들을 찾는 일을 한다.둘 다 아니다.[\]아닌[\\]말 그대로 백슬래시를 할 수 있게 해줬어OR 백슬래시 문자에 패턴이 번갈아 나타나며\\그 사건을 담당하기 위해서요(아래 참조)
캐릭터 수업은 그 자체의 "반대"를 이해하는데, "a 또는 b 또는 c가 아니다"이다.문자 클래스는 목표 위치의 단일 문자를 의미하기 때문에 실제로 집합의 역이 아니라 문자의 NOT이다.
현재 문자 클래스는 4자의 확장으로 제한되어 있으므로 [0-9]에는 3개의 검색 [0-3], [4-7], [8-9]가 필요하다.알파벳은 일곱 번의 검색을 필요로 할 것이다.레그스가 검색엔진에 과부하를 주지 않고 작동한다는 것을 보장하기 위해서다.과제 T106685를 참조하십시오.
다음과 같은 구성 요소:\d(자리) 또는\a일부 다른 정규스 구현에서 사용되는 (알파벳자)는 허용되지 않는다.
교대
마지막으로, 교대란 AA, BB 또는 CC와 같이 경기에 대한 대체 가능성을 포함하고 있는 regex의 한 종류다.
- "AA" 또는 "BB" 또는 "CC" to Word 전체 페이지 검색
AA BB CC두 글자의 위치를 다시 검색하다(AA BB CC)교체가 가장 긴 패턴을 찾기 때문에 더 큰 regexp 내에서 사용되며, 그래서 괄호는 그 경계를 정의하지만 교체가 전체 regexp 패턴인 경우 만들 필요가 없는 경계다.
노트
- ^ 페이지를 검색하지 않고 검색할 때 색인(데이터베이스)에서 항목을 검색하는 경우모든 콘텐츠는 항상 "알려져 있고" 인덱스에 상주한다.따라서 "네임스페이스 검색" 또는 "페이지에서 변환된 내용 검색"을 읽을 때 "검색"을 "인덱스를 검색"으로 대체할 수 있다.
- ^ 이것은 또한 "페이지 검색이 끝나기 전에 페이지의 템플리트를 확장한다"라고 말하지만, 그것은 추상화에 불과하다.
- ^ 사용자가 431,316,360명이고 잘 필터링된 regex 검색은 밀리초밖에 걸리지 않는 반면, 맨 위키 넓이의 regex는 수십 초가 걸릴 수 있기 때문에 필터를 추가하면 얻을 수 있는 이점은 엄청나다.