2017-11-26 3 views
2

나는 다음과 같은 형식의 문자열을 기반으로 tsquery을 만들어야합니다이스케이프 하이픈

something-smth-somthing-etc-etc 

to_tsquery('something-smth-somthing-etc-etc') 반환 호출 :

'something-smth-somthing-etc-etc' & 'someth' & 'smth' & 'somth' & 'etc' & 'etc' 

분명히, 문자열을 토큰 화를 겪는다을, 형태소 분석 등. 우리의 경우, 우리가 FTS를 만들고있는 칼럼에는 이미 하나의 어휘로 구성된 tsvector가 포함되어 있습니다 : 'something-smth-somthing-etc-etc'.

쿼리 select * from sometable where searchee @@ to_tsquery('something-smth-somthing-etc-etc')은 결과를 반환하지 않습니다.

to_tsquery은 어떻게 호출 할 수 있습니까? 그렇다면 제공된 문자열을 분석하고 하나의 어휘 쿼리를 작성하지 않으시겠습니까?

여기에 더 중요한 것이 있습니까?

답변

2

a를 했나요 값 tsvector이 suming,이 처리되지 않았습니다, 그러나 다만 tsvecor 형식으로 삽입 :

t=# select to_tsvector('something-smth-somthing-etc-etc'), 'something-smth-somthing-etc-etc'::tsvector; 
            to_tsvector         |    tsvector 
-----------------------------------------------------------------------------------+----------------------------------- 
'etc':5,6 'smth':3 'something':2 'something-smth-somthing-etc-etc':1 'somthing':4 | 'something-smth-somthing-etc-etc' 
(1 row) 

THN이 실제로는 잘못된 것 :

t=# select 'something-smth-somthing-etc-etc'::tsvector @@ to_tsquery('something-smth-somthing-etc-etc'); 
?column? 
---------- 
f 

이 당신을 해킹 tsquery에서도 처리를 건너 뛸 수 있습니다.

t=# select 'something-smth-somthing-etc-etc'::tsvector @@ 'something-smth-somthing-etc-etc'::tsquery; 
?column? 
---------- 
t 
+0

고마워요! 매력처럼 작동했습니다. –