Ary*_*dlé 5 postgresql full-text-search
我需要根据以下格式的字符串创建一个 tsquery:
something-smth-somthing-etc-etc
Run Code Online (Sandbox Code Playgroud)
调用to_tsquery('something-smth-somthing-etc-etc')
返回:
'something-smth-somthing-etc-etc' & 'someth' & 'smth' & 'somth' & 'etc' & 'etc'
Run Code Online (Sandbox Code Playgroud)
显然,字符串经历了标记化、词干提取等。但在我们的例子中,我们进行 FTS 的列已经包含由单个词位组成的 tsvector 'something-smth-somthing-etc-etc'
:。
查询
select * from sometable where searchee @@ to_tsquery('something-smth-somthing-etc-etc')
没有返回结果。
我如何调用to_tsquery
,这样它就不会分析提供的字符串并创建单个词素查询?
或者我在这里错过了更重要的东西?
总而言之,您有具有提到值的 tsvector,它没有被处理,只是作为 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)
Run Code Online (Sandbox Code Playgroud)
那么你确实会得到 false:
t=# select 'something-smth-somthing-etc-etc'::tsvector @@ to_tsquery('something-smth-somthing-etc-etc');
?column?
----------
f
Run Code Online (Sandbox Code Playgroud)
要破解它,您也可以跳过 tsquery 的处理:
t=# select 'something-smth-somthing-etc-etc'::tsvector @@ 'something-smth-somthing-etc-etc'::tsquery;
?column?
----------
t
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1687 次 |
最近记录: |