여기에서 순위를 매기기 위해 전체 텍스트를 사용하기 위해 사전을 "tturn"할 수 있는지는 잘 모르겠습니다. 그러나 일부 primityve는 예를 들어, 아주 쉽게 순위와 함께 조회 할 수 있습니다
t=# with a(a) as (values('a b c'),('a c d'),('b e f'),('r b t'),('q w'))
, b(i,b) as (values(1,'a b'), (2,'e'), (3,'b'))
, p as (select unnest(string_to_array(b.b,' ')) arr,i from b)
select a phrases,arr match_words,count(1) over (partition by arr) words_in_matches, count(1) over (partition by i) matches,i from a left join p on a.a like '%'||arr||'%';
phrases | match_words | words_in_matches | matches | i
---------+-------------+------------------+---------+---
r b t | b | 6 | 5 | 1
a b c | b | 6 | 5 | 1
b e f | b | 6 | 5 | 1
a b c | a | 2 | 5 | 1
a c d | a | 2 | 5 | 1
b e f | e | 1 | 1 | 2
r b t | b | 6 | 3 | 3
a b c | b | 6 | 3 | 3
b e f | b | 6 | 3 | 3
q w | | 1 | 1 |
(10 rows)
- 문구는 큰 테이블에서 행합니다.
- match_words은 작은 테이블에서 토큰은
- 큰 테이블 문구의 일치의 양이 작은 테이블에서 문구의
- 내가 지수 작은 테이블 문구에서입니다 문구에
- 일치하는 토큰의 양을 words_in_matches (공백으로 갈라)된다
그래서 당신은 당신의 답변을
덕분에 ... 순위의 일종을 얻기 위해 3, 4 열을 기준으로 주문할 수 있습니다. 필자가 pgsql을 처음 접했을 때 나는 그것을 이해하지 못하기 때문에. 토큰은 무엇을 의미합니까? –
토큰은 단어입니다.이 경우 단순화를 위해 공백으로 구분 된 문자를 사용했습니다. 개념을 보려면 https://www.postgresql.org/docs/current/static/textsearch-controls.html#textsearch-parsing-documents를 읽으십시오. –