| PostgreSQL 9.3.25 스포츠 토토 결과 | ||||
|---|---|---|---|---|
| PostgreSQL : 문서 : 9.3 : 테이블 및 토토 핫 | 사설 토토 : 문서 : 9.3 : 전문 검색 | 12장. 전체 텍스트 검색 | 스포츠 토토 베트맨 : 문서 : 9.3 : 추가 기능 | |
전체 텍스트 검색을 구현하려면 다음을 수행하는 기능이 있어야 합니다. 생성하다ts벡터스포츠 토토 결과 및 a에서tsquery사용자 쿼리에서. 또한 우리는 유용한 순서로 결과를 반환하므로 다음을 수행하는 함수가 필요합니다. 쿼리와의 관련성을 기준으로 스포츠 토토 결과를 비교합니다. 결과를 멋지게 표시할 수 있는 것도 중요합니다.PostgreSQL다음을 지원합니다. 이 모든 기능을 제공합니다.
포스트그레SQL제공
기능to_ts벡터변환용
스포츠 토토 결과를ts벡터데이터 유형.
to_ts벡터([ 구성 regconfig, ] 스포츠 토토 결과 텍스트) 반환ts벡터
to_ts벡터텍스트를 구문 분석합니다.
스포츠 토토 결과를 토큰으로 만들고, 토큰을 어휘소로 줄이고, a를 반환합니다.ts벡터어휘를 함께 나열합니다.
스포츠 토토 결과에서의 위치와 함께. 스포츠 토토 결과가 처리되었습니다.
지정된 또는 기본 텍스트 검색 구성에 따라.
다음은 간단한 예입니다.
SELECT to_tsVector('english', '뚱뚱한 고양이가 매트 위에 앉았습니다. 살찐 쥐를 잡아먹었습니다.');
to_ts벡터
----------------------------------------
'ate':9 'cat':3 'fat':2,11 'mat':7 'rat':12 'sat':4
위의 예에서 우리는 결과를 볼 수 있습니다ts벡터단어를 포함하지 않습니다.a, 켜짐또는그것, 단어쥐되었다쥐및 구두점-무시되었습니다.
그to_ts벡터함수
내부적으로 스포츠 토토 결과 텍스트를 분할하는 파서를 호출합니다.
토큰을 만들고 각 토큰에 유형을 할당합니다. 각 토큰에 대한 목록은 다음과 같습니다.
사전(PostgreSQL : 문서 : 9.3 : 토토 사이트 추천)가 참조되며, 목록은 다음에 따라 달라질 수 있습니다.
토큰 유형. 최초의 사전인식토큰은 하나 이상의 정규화된 토큰을 내보냅니다.어휘토큰을 나타냅니다. 에 대한
예쥐되었다쥐사전 중 하나가 다음을 인식했기 때문입니다.
단어쥐은의 복수형입니다쥐. 일부 단어는 다음과 같이 인식됩니다.단어 중지 (섹션
12.6.1), 이는 너무 발생하므로 무시됩니다.
자주 검색에 유용합니다. 우리의 예에서는 다음과 같습니다.a, 켜짐및그것. 목록에 사전이 없는 경우
토큰을 인식하면 무시됩니다. 이 예에서는
구두점에 발생한 일입니다.-왜냐하면
실제로 토큰 유형에 할당된 사전이 없습니다.
(공간 기호), 즉 공간 토큰이
색인이 생성되지 않습니다. 파서, 사전의 선택
색인화할 토큰 유형은 선택한 텍스트 검색에 의해 결정됩니다.
구성(PostgreSQL : 문서 : 9.3 : 토토 결과 예). 에서는 다양한 구성이 가능합니다.
동일한 데이터베이스 및 사전 정의된 구성을 사용할 수 있습니다.
다양한 언어. 이 예에서는 기본 구성을 사용했습니다.영어영어의 경우.
함수설정중량사용 가능
a의 항목에 라벨을 지정하려면ts벡터와 함께
주어진무게, 여기서 가중치는 다음 중 하나입니다.
편지A, B,
C또는D. 이것은
일반적으로 다른 부분에서 오는 항목을 표시하는 데 사용됩니다.
제목이나 본문과 같은 스포츠 토토 결과. 나중에 이 정보는
검색결과 순위에 사용됩니다.
왜냐하면to_tsVector(NULL)이 반환됩니다.NULL그건
사용하는 것이 좋습니다합체필드가 null일 수 있는 경우. 권장되는 방법은 다음과 같습니다.
생성 중ts벡터구조화된
스포츠 토토 결과:
업데이트 tt SET ti =
setweight(to_tsVector(coalesce(title,'')), 'A') ||
setweight(to_tsVector(coalesce(keyword,'')), 'B') ||
setweight(to_tsVector(coalesce(abstract,'')), 'C') ||
setweight(to_tsVector(coalesce(body,'')), 'D');
여기서 우리는 사용했습니다설정중량에
완성된 각 어휘의 출처에 라벨을 붙입니다.ts벡터, 그런 다음 라벨이 붙은을 병합했습니다.ts벡터값을 사용하는 값ts벡터연결 연산자||. (섹션
12.4.1이 작업에 대한 세부정보를 제공합니다.)
PostgreSQL제공
기능to_tsquery그리고plainto_tsquery쿼리를 다음으로 변환하기 위해tsquery데이터 유형.to_tsquery다음보다 더 많은 기능에 대한 액세스 제공plainto_tsquery, 그러나 그보다 적습니다.
입력에 대해 용서합니다.
to_tsquery([ 구성 regconfig, ] 쿼리텍스트 텍스트) 반환tsquery
to_tsquery생성tsquery값:쿼리텍스트, 단일로 구성되어야 함
부울 연산자로 구분된 토큰&(그리고),|(또는) 및!(아님). 이러한 연산자는 그룹화될 수 있습니다.
괄호를 사용합니다. 즉,에 대한 입력은to_tsquery이미 일반 규칙을 따라야 합니다
에 대한tsquery설명된 대로 입력섹션 8.11. 차이점은
기본적인 동안tsquery입력은 토큰을 다음 위치에서 가져옵니다.
액면가,to_tsquery정규화
지정된 또는 기본값을 사용하여 각 토큰을 어휘소로 변환
구성하고 불용어인 토큰을 모두 삭제합니다.
구성에 따라. 예를 들면:
SELECT to_tsquery('english', 'The & Fat & Rats');
to_tsquery
---------------
'뚱뚱하다' & '쥐'
기본과 동일tsquery입력, 가중치 가능 일치하도록 제한하려면 각 어휘에 첨부하세요.ts벡터해당 가중치의 어휘소입니다. 예를 들면:
SELECT to_tsquery('english', '뚱뚱한 | 쥐:AB');
to_tsquery
------------------
'지방' | '쥐':AB
또한,*어휘에 첨부할 수 있습니다. 접두사 일치 지정:
SELECT to_tsquery('supern:*A & star:A*B');
to_tsquery
-------------
'supern':*A & 'star':*AB
이러한 어휘는 다음의 모든 단어와 일치합니다.ts벡터주어진 문자열로 시작합니다.
to_tsquery또한 허용 가능
작은따옴표로 묶인 문구. 이는 주로 다음과 같은 경우에 유용합니다.
구성에는 다음에서 트리거될 수 있는 동의어 사전이 포함되어 있습니다.
그런 문구. 아래 예에서 동의어 사전에는 규칙이 포함되어 있습니다.초신성 별: sn:
SELECT to_tsquery('''초신성별'' & !게');
to_tsquery
---------------
'sn' & !'게'
따옴표 없이,to_tsquery할 것이다
AND로 구분되지 않은 토큰에 대해 구문 오류가 발생합니다.
또는 OR 연산자입니다.
plainto_tsquery([ 구성 regconfig, ] 쿼리텍스트 텍스트) 반환tsquery
plainto_tsquery변형하다
서식 없는 텍스트쿼리텍스트에tsquery. 텍스트가 구문 분석되고 정규화됩니다.
만큼은to_ts벡터그럼&(AND) 부울 연산자가 삽입되었습니다.
살아남은 단어 사이에.
예:
SELECT plainto_tsquery('english', 'The Fat Rats');
plainto_tsquery
-----------------
'뚱뚱하다' & '쥐'
참고하세요plainto_tsquery할 수 없습니다
부울 연산자, 중량 레이블 또는 접두사 일치 레이블을 인식합니다.
입력에서:
SELECT plainto_tsquery('english', 'The Fat & Rats:C');
plainto_tsquery
--------
'지방' & '쥐' & 'c'
여기서 입력된 구두점은 모두 공백으로 폐기되었습니다. 기호.
순위는 스포츠 토토 결과가 스포츠 토토 결과와 얼마나 관련성이 있는지 측정하려고 시도합니다. 특정 쿼리를 사용하면 일치하는 항목이 많을 때 가장 많이 관련 항목이 먼저 표시될 수 있습니다.PostgreSQL사전 정의된 순위 2개 제공 어휘, 근접성 및 구조적 정보; 즉, 쿼리가 얼마나 자주 발생하는지 고려합니다. 스포츠 토토 결과에 용어가 나타나는지, 용어가 얼마나 가까이 있는지 스포츠 토토 결과, 스포츠 토토 결과에서 스포츠 토토 결과의 일부가 얼마나 중요한지 그들은 발생합니다. 그러나 관련성이라는 개념이 모호하고 매우 모호하다. 애플리케이션별. 다른 응용 프로그램에는 필요할 수 있습니다. 순위를 위한 추가 정보(예: 스포츠 토토 결과 수정) 시간. 내장된 순위 기능은 단지 예시일 뿐입니다. 당신은 할 수 있습니다 자신만의 순위 함수를 작성하거나 결과를 다음과 결합합니다. 귀하의 특정 요구 사항에 맞는 추가 요소를 제공합니다.
현재 사용 가능한 두 가지 순위 기능은 다음과 같습니다.
일치 빈도에 따라 벡터 순위를 매깁니다. 어휘.
이 함수는 다음을 계산합니다.표지 밀도주어진 스포츠 토토 결과 벡터 및 쿼리에 대한 순위 Clarke, Cormack 및 Tudhope의 "관련성 순위"에 설명되어 있습니다. "정보 처리" 저널의 1~3개 용어 쿼리" 및 관리", 1999.
이 함수는 입력에 위치 정보가 필요합니다. 따라서 작동하지 않습니다."벗겨짐" ts벡터값 — 항상 반환됩니다. 제로.
이 두 기능 모두에 대해 선택 사항가중치인수는 무게 측정 기능을 제공합니다. 단어 인스턴스가 어떻게 되는지에 따라 다소 크게 달라집니다. 라벨이 붙어 있습니다. 가중치 배열은 각각의 가중치를 지정합니다. 단어 카테고리(순서대로):
D-가중치, C-가중치, B-가중치, A-가중치
아니면가중치제공된 경우 다음 기본값이 사용됩니다.
{0.1, 0.2, 0.4, 1.0}
일반적으로 가중치는 특정 영역의 단어를 표시하는 데 사용됩니다. 제목이나 초기 초록과 같은 스포츠 토토 결과에 스포츠 토토 결과에 있는 단어보다 중요도가 높거나 낮습니다. 몸.
더 긴 스포츠 토토 결과는 다음을 포함할 가능성이 더 높기 때문에 쿼리 용어는 스포츠 토토 결과 크기를 고려하는 것이 합리적입니다. 예를 들어 검색어가 5개 포함된 100단어 스포츠 토토 결과 아마도 다섯 개가 포함된 천 단어 스포츠 토토 결과보다 더 관련성이 있을 것입니다. 인스턴스. 두 순위 함수 모두 정수를 사용합니다.정규화여부를 지정하는 옵션 스포츠 토토 결과의 길이가 순위에 어떤 영향을 미치는지. 정수 옵션은 여러 동작을 제어하므로 비트 마스크입니다. 다음을 사용하여 하나 이상의 동작을 지정합니다.|(용 예2|4).
0(기본값)은 스포츠 토토 결과 길이를 무시합니다.
1은 순위를 1 + 스포츠 토토 결과의 로그로 나눕니다. 길이
2 순위를 스포츠 토토 결과 길이로 나눕니다.
4 순위를 범위 간 평균 조화 거리로 나눕니다.
(이것은 다음으로만 구현됩니다.ts_rank_cd)
8 순위를 스포츠 토토 결과의 고유 단어 수로 나눕니다.
16은 순위를 1 + 고유 수의 로그로 나눕니다. 스포츠 토토 결과의 단어
32는 순위 자체를 + 1로 나눕니다.
두 개 이상의 플래그 비트가 지정되면 변환은 다음과 같습니다. 나열된 순서대로 적용됩니다.
순위 기능은 다음을 사용하지 않는다는 점에 유의하는 것이 중요합니다. 어떠한 글로벌 정보도 제공할 수 없으므로 공정한 생산이 불가능합니다. 때때로 원할 경우 1% 또는 100%로 정규화합니다. 정규화 옵션 32(순위/(순위+1)) 적용 가능 모든 순위를 0에서 1 사이의 범위로 조정하려면 물론 이것은 단지 외관상의 변화일 뿐입니다. 순서에는 영향을 주지 않습니다. 검색결과입니다.
다음은 가장 높은 순위의 10개만 선택하는 예입니다. 일치:
제목 선택, ts_rank_cd(텍스트 검색, 쿼리) AS 순위
FROM apod, to_tsquery('neutrino|(dark & Matter)') 쿼리
WHERE 쿼리 @@ 텍스트 검색
순위 DESC로 주문
제한 10;
제목 | 순위
-------------------+----------
태양 속의 중성미자 | 3.1
Sudbury 중성미자 검출기 | 2.4
은하계 암흑물질에 대한 마초적인 견해 | 2.01317
뜨거운 가스와 암흑물질 | 1.91171
처녀자리 클러스터: 고온 플라즈마 및 암흑 물질 | 1.90953
태양 중성미자 래프팅 | 1.9
NGC 4650A: 이상한 은하와 암흑 물질 | 1.85774
뜨거운 가스와 암흑물질 | 1.6123
우주 중성미자 얼음낚시 | 1.6
약한 렌즈 효과는 우주를 왜곡합니다 | 0.818218
이것은 정규화된 순위를 사용한 동일한 예입니다:
SELECT 제목, ts_rank_cd(textsearch, query, 32 /* 순위/(순위+1) */ ) AS 순위
FROM apod, to_tsquery('neutrino|(dark & Matter)') 쿼리
WHERE 쿼리 @@ 텍스트 검색
순위 DESC로 주문
제한 10;
제목 | 순위
---------------------+-------------------
태양 속의 중성미자 | 0.756097569485493
Sudbury 중성미자 검출기 | 0.705882361190954
은하계 암흑물질에 대한 마초적인 관점 | 0.668123210574724
뜨거운 가스와 암흑물질 | 0.65655958650282
처녀자리 클러스터: 고온 플라즈마 및 암흑 물질 | 0.656301290640973
태양 중성미자 래프팅 | 0.655172410958162
NGC 4650A: 이상한 은하와 암흑 물질 | 0.650072921219637
뜨거운 가스와 암흑물질 | 0.617195790024749
우주 중성미자 얼음낚시 | 0.615384618911517
약한 렌즈 효과는 우주를 왜곡합니다 | 0.450010798361481
순위는 컨설팅이 필요하기 때문에 비용이 많이 들 수 있습니다.tsvector일치하는 각 스포츠 토토 결과의 I/O 바인딩되어 있으므로 속도가 느립니다. 아쉽게도 거의 실용적인 쿼리로 인해 종종 큰 결과가 발생하므로 피할 수 없습니다. 일치하는 수입니다.
검색 결과를 표시하려면 각 결과의 일부를 표시하는 것이 이상적입니다.
스포츠 토토 결과와 그것이 쿼리와 어떻게 관련되어 있는지. 보통 검색하면
엔진은 표시된 검색어와 함께 스포츠 토토 결과의 일부를 표시합니다.PostgreSQL기능 제공ts_headline이것을 구현하는 것
기능.
ts_headline([ 구성 regconfig, ] 스포츠 토토 결과 텍스트, 질의 tsquery [, 옵션 텍스트 ]) 반환텍스트
ts_headline스포츠 토토 결과를 수락합니다
쿼리와 함께 스포츠 토토 결과에서 발췌한 내용을 반환합니다.
쿼리의 어떤 용어가 강조 표시됩니다. 될 구성
스포츠 토토 결과를 구문 분석하는 데 사용되는 내용은 다음과 같이 지정할 수 있습니다.구성; 만일구성생략되었습니다.default_text_search_config구성은 다음과 같습니다
사용되었습니다.
만약옵션문자열은 다음과 같습니다. 지정된 하나 이상의 쉼표로 구분된 목록으로 구성되어야 합니다.옵션=값쌍. 는 사용 가능한 옵션은 다음과 같습니다:
StartSel, StopSel: 쿼리를 구분하는 문자열 다른 스포츠 토토 결과와 구별하기 위해 스포츠 토토 결과에 나타나는 단어 발췌한 단어입니다. 다음과 같은 경우 이러한 문자열을 큰따옴표로 묶어야 합니다. 공백이나 쉼표를 포함하세요.
MaxWords, MinWords: 이 숫자는 가장 길고 출력할 헤드라인이 가장 짧습니다.
단어: 이 길이 이하의 단어 헤드라인의 시작과 끝 부분에 삭제됩니다. 기본값 3의 값은 일반적인 영어 관사를 제거합니다.
하이라이트올: 부울 플래그; 만일참전체 스포츠 토토 결과는 다음과 같이 사용됩니다 앞의 세 매개변수를 무시하고 헤드라인을 작성합니다.
MaxFragments: 최대 텍스트 수 표시할 발췌 또는 단편. 기본값 0이 선택됩니다. 비조각 지향 헤드라인 생성 방법. 더 큰 값 0보다 크면 조각 기반 헤드라인 생성이 선택됩니다. 이 방법 가능한 한 많은 쿼리 단어가 포함된 텍스트 조각을 찾고 쿼리 단어 주위에 해당 조각을 늘립니다. 쿼리 결과로 단어는 각 조각의 중앙에 가깝고 위에 단어가 있습니다. 각면. 각 조각은 최대로 구성됩니다.MaxWords그리고 긴 단어들단어29781_29929MinWords스포츠 토토 결과에 표시됩니다.
FragmentDelimiter: 둘 이상의 경우 조각이 표시되면 조각은 다음과 같이 구분됩니다. 문자열.
지정되지 않은 옵션은 다음 기본값을 받습니다:
StartSel=<b, StopSel=</b, MaxWords=35, MinWords=15, ShortWord=3, 하이라이트All=FALSE, MaxFragments=0, FragmentDelimiter=" ... "
예:
SELECT ts_headline('영어',
'가장 일반적인 검색 유형
주어진 검색어가 포함된 모든 스포츠 토토 결과를 찾는 것입니다.
그리고 유사한 순서대로 반환합니다.
쿼리.',
to_tsquery('쿼리 및 유사성'));
ts_headline
----------------------------------
특정 <b검색어</b 용어 포함
그리고 <b유사성</b 순서대로 반환합니다.
<b쿼리</b.
SELECT ts_headline('한국어',
'가장 일반적인 검색 유형
주어진 검색어가 포함된 모든 스포츠 토토 결과를 찾는 것입니다.
그리고 유사한 순서대로 반환합니다.
쿼리.',
to_tsquery('쿼리 및 유사성'),
'StartSel = <, StopSel = ');
ts_headline
------------------------------------------
주어진 <query 용어를 포함하는
<유사성 순서대로 반환합니다.
<쿼리.
ts_headline원본을 사용합니다
스포츠 토토 결과(a가 아님)ts벡터요약해서
속도가 느리므로 주의해서 사용해야 합니다. 일반적인 실수는 전화하는 것입니다.ts_headlinefor모든10개만일 때 스포츠 토토 결과 일치
서류를 보여드릴 예정입니다.SQL하위 쿼리가 도움이 될 수 있습니다. 여기에 예가 있습니다:
SELECT id, ts_headline(body, q), 순위
FROM (SELECT id, body, q, ts_rank_cd(ti, q) AS 순위
apod에서, to_tsquery('stars') q
어디에서 @@q
순위 DESC로 주문
제한 10) AS foo;| 이전 | 배트맨 토토 : 문서 : 9.3 : 배트맨 토토 9.3.25 문서화 | 다음 |
| 테이블 및 색인 | 위로 | 추가 기능 |