윈 토토 : 문서 : 9.4 : | |||
---|---|---|---|
PostgreSQL : 범퍼카 토토 : 9.4 : 텍스트 검색 제어 | 스포츠 토토 결과 : 문서 : 9.4 : 전문 검색 | 12 장. 전문 검색 | PostgreSQL : 문서 : 9.4 : 젠 토토 |
이 섹션은 텍스트 검색과 관련하여 유용한 추가 스포츠 토토 및 연산자를 설명합니다.
섹션 12.3.1원시 텍스트 문서가 어떻게 변환 될 수 있는지 보여주었습니다tsvector값.스포츠 토토이미있는 문서를 조작하는 데 사용할 수있는 스포츠 토토과 연산자도 제공합니다.tsvectorForm.
thetsvector연결 연산자는 인수로 주어진 두 벡터의 Lexemes와 위치 정보를 결합한 벡터를 반환합니다. 위치 및 중량 라벨은 연결 중에 유지됩니다.to_tsvector
두 개의 원본 문화 문자열의 연결. (왼쪽 인수의 끝에서 제거 된 중지 단어는 결과에 영향을 미치지 않기 때문에 동등성은 정확하지 않습니다. 반면, 텍스트 관련성이 사용 된 경우 오른쪽 인수에서 Lexemes의 위치에 영향을 미쳤을 것입니다.).
적용하기 전에 텍스트를 연결하기보다는 벡터 형태의 연결을 사용하는 한 가지 장점to_tsvector
, 다른 구성을 사용하여 문서의 다른 섹션을 구문 분석 할 수 있습니다. 또한 때문에setweight
함수는 주어진 벡터의 모든 lexemes를 동일한 방식으로 표시합니다. 텍스트를 구문 분석하고 수행해야합니다setweight
문서의 다른 부분에 다른 가중치로 레이블을 지정하려는 경우 연결하기 전에.
setweight
모든 위치가 주어진 상태로 표시된 입력 벡터의 사본을 반환합니다weight, 어느A, B, C또는D. (D는 새 벡터의 기본값이며 출력에 표시되지 않습니다.)이 레이블은 벡터가 연결되면 유지되므로 스포츠 토토 순위에 따라 문서의 다른 부분의 단어가 다르게 가중 될 수 있습니다..
무게 라벨이 적용됨위치, 아님Lexemes. 입력 벡터가 위치를 제거한 경우setweight
아무것도하지 않습니다.
벡터에 저장된 Lexemes의 수를 반환합니다.
주어진 벡터와 동일한 lexemes를 나열하지만 위치 또는 중량 정보가 부족한 벡터를 반환합니다. 반환 된 벡터는 관련성 순위를 위해 스트리핑되지 않은 벡터보다 훨씬 덜 유용하지만 일반적으로 훨씬 작습니다.
섹션 12.3.2원시 텍스트 쿼리를 어떻게 변환 할 수 있는지 보여주었습니다tsquery값.스포츠 토토이미있는 쿼리를 조작하는 데 사용할 수있는 함수 및 연산자를 제공합니다tsqueryForm.
주어진 두 쿼리의 반환 및 공액을 반환합니다.
주어진 쿼리의 또는 전달을 반환합니다.
주어진 쿼리의 부정을 반환합니다.
A에서 노드 수 (Lexemes + 연산자)의 수를 반환합니다tsquery. 이 스포츠 토토은를 결정하는 데 유용합니다.쿼리는 의미가 있거나 (반환> 0) 또는 중지 단어 만 포함합니다 (반환 0). 예 :
Numnode (Plainto_tsquery ( 'one'))를 선택합니다.
A의 부분을 반환합니다tsquery인덱스 검색에 사용할 수 있습니다. 이 기능은 무시 할 수없는 쿼리, 예를 들어 중지 단어 만 포함하는 쿼리를 감지하는 데 유용합니다.
QueryTree를 선택합니다 (To_tsQuery ( '! defined'));
theTS_REWRITE
스포츠 토토 가족 검색 주어진tsquery대상 하위 퀘스트의 발생에 대해서는 각 발생을 대체 하위 쿼리로 교체합니다. 본질적 으로이 작업은입니다.tsquery-특이 적 버전의 서브 스트링 교체. 대상과 대체 조합은 A로 생각할 수 있습니다.쿼리 재 작성 규칙. 이러한 다시 쓰기 규칙의 모음은 강력한 검색 원조가 될 수 있습니다.뉴욕, Big Apple, NYC, 고담) 또는 검색을 좁히기 위해 사용자를 핫 주제로 안내합니다. 이 기능과 동의어 사전 사전 사이에는 기능이 중복됩니다 (섹션 12.6.4). 그러나, 당신은 다시 문지인없이 다시 쓰기 규칙 세트를 수정할 수 있지만, 동의어 사전을 업데이트하려면 reindexing이 효과적이어야합니다.
이 형태의TS_REWRITE
단순히 단일 재 작성 규칙을 적용합니다 :대상로 대체대체13108_13130쿼리. 예를 들어:
ts_rewrite ( 'a & b':: tsquery, 'a':: tsquery, 'c':: tsquery);
이 형태의TS_REWRITE
시작을 허용쿼리및 SQLselect명령은 텍스트 문자열로 제공됩니다. 그만큼select두 열의 열을 생산해야합니다tsquery타입. 의 각 행에 대해select결과, 첫 번째 열 값의 발생 (대상)의 발생은 전류 내에서 두 번째 열 값 (대체)으로 대체됩니다.쿼리값. 예를 들어:
테이블 별칭 생성 (t tsquery 기본 키, s tsquery);
여러 재 작성 규칙이 이러한 방식으로 적용되면 응용 프로그램 순서가 중요 할 수 있습니다. 실제로 소스 쿼리를 원할 것입니다.주문 by일부 주문 키.
실제 천문학적 사례를 고려해 봅시다. 쿼리를 확장 할 것입니다Supernovae테이블 구동 재 작성 규칙 사용 :
테이블 별칭 생성 (t tsquery 기본 키, s tsquery);
테이블을 업데이트하여 재 작성 규칙을 변경할 수 있습니다.
별칭 업데이트
가능한 모든 규칙을 확인하기 때문에 많은 재 작성 규칙이있을 때 다시 쓰기가 느려질 수 있습니다. 명백한 비 후급 규칙을 필터링하기 위해 우리는 |tsquery타입. 아래 예에서는 원래 쿼리와 일치 할 수있는 규칙 만 선택합니다.
TS_REWRITE ( 'A & B':: TSQUERY,
별도의 열을 사용하여 저장할 때tsvector문서의 표현은를 업데이트하려면 트리거를 만들어야합니다tsvector문서 내용 열이 변경 될 때 열. 이를 위해 두 개의 내장 트리거 스포츠 토토을 사용할 수 있거나 직접 쓸 수 있습니다.
tsvector_update_trigger (TSVECTOR_COLUMN_NAME, config_name, text_column_name [, ... ]))TSVECTOR_COLUMN_NAME, config_column_name, text_column_name [, ... ])
이 트리거 함수는 자동으로 Atsvector하나 이상의 텍스트 열의 열,에 지정된 매개 변수의 제어에서트리거 만들기명령. 그들의 사용의 예는 다음과 같습니다.
테이블 메시지 작성 (
이 방아쇠를 만들어 냈습니다.제목또는Body자동으로 반영됩니다TSV, 응용 프로그램이 그것에 대해 걱정할 필요없이.
첫 번째 트리거 인수는의 이름이어야합니다.tsvector열이 업데이트 될 열입니다. 두 번째 인수는 변환을 수행하는 데 사용할 텍스트 검색 구성을 지정합니다.tsvector_update_trigger
, 구성 이름은 단순히 두 번째 트리거 인수로 제공됩니다. 위에서 볼 수 있듯이 스키마 자격을 갖추어야하므로 트리거 동작이 변경되지 않도록 변하지 않도록search_path. 을 위한tsvector_update_trigger_column
, 두 번째 트리거 인수는 다른 테이블 열의 이름입니다.RegConfig. 이를 통해 양의 구성을 선택할 수 있습니다.텍스트, varchar또는char). 주어진 순서대로 문서에 포함됩니다.
이러한 내장 트리거의 제한은 모든 입력 열을 모두 처리한다는 것입니다. 열을 다르게 처리하려면 (예 : 신체와 다르게 무게 제목) 사용자 정의 트리거를 작성해야합니다.pl/pgsql트리거 언어로 :
함수 작성 메시지
생성 할 때 구성 이름을 명시 적으로 지정하는 것이 중요하다는 것을 명심하십시오tsvector트리거 내부의 값이므로 열 내용이 변경에 영향을받지 않도록default_text_search_config. 이렇게하지 않으면 덤프 및 재 장전 후 검색 결과가 변경되는 것과 같은 문제가 발생할 수 있습니다.
함수TS_STAT
구성을 확인하고 스톱 단어 후보를 찾는 데 유용합니다.
TS_STAT (sqlquery 텍스트, [ 웨이트 텍스트, ]Word 텍스트, outndoc 정수,Nentry 정수) 반환Setof Record
sqlquery단일을 반환 해야하는 SQL 쿼리가 포함 된 텍스트 값입니다.tsvector열.TS_STAT
쿼리를 실행하고에 포함 된 각 고유 한 Lexeme (Word)에 대한 통계를 반환합니다tsvector데이터. 반환 된 열은입니다.
Word 텍스트- Lexeme의 값
ndoc 정수- 문서 수 (tsvectors) 단어가 발생했습니다.
Nentry 정수- 단어의 총 발생 수
if웨이트공급되며, 그 중 하나를 갖는 발생 만 계산됩니다.
예를 들어, 문서 컬렉션에서 가장 빈번한 10 개의 단어를 찾으려면 :
선택 *에서 ts_stat ( 'APOD에서 벡터 선택')
동일하지만 무게로 단어 발생 만 세는 것A또는B:
선택 *에서 TS_STAT에서 ( 'APOD에서 벡터 선택', 'AB')