Gre*_*zly 14 postgresql full-text-search
postresql是否能够根据'half'一词进行全文搜索?例如,我正在尝试"tree"搜索,但我告诉postgres搜索"tr".
我找不到能够做到这一点的解决方案.
目前我正在使用
select * from test, to_tsquery('tree') as q where vectors @@ q ;
Run Code Online (Sandbox Code Playgroud)
但是我想做这样的事情:
select * from test, to_tsquery('tr%') as q where vectors @@ q ;
Run Code Online (Sandbox Code Playgroud)
Mag*_*der 20
您可以使用tsearch前缀匹配,请参阅http://www.postgresql.org/docs/9.0/interactive/textsearch-controls.html#TEXTSEARCH-PARSING-QUERIES
postgres=# select to_tsvector('tree') @@ to_tsquery('tr:*');
?column?
----------
t
(1 row)
Run Code Online (Sandbox Code Playgroud)
它只适用于前缀搜索,而不是你想在单词中的任何位置进行部分匹配.
cat*_*ave 10
听起来你只是想要通配符匹配.
如前所述,一种选择是三元组.我(非常)有限的经验是,在我喜欢的大型桌子上它太慢了(有些情况比LIKE慢).正如我所说,我对三卦的经验是有限的,所以我可能只是错误地使用它.
你可以使用的第二个选项是wildspeed模块:http://www.sai.msu.su/~megera/wiki/wildspeed (你必须构建和安装这个).
第二个选项也适用于后缀/中间匹配.哪个可能比你想要的还要多.
有一些警告(如索引的大小),因此请仔细阅读该页面.
select * from test, to_tsquery('tree') as q
where vectors @@ q OR xxxx LIKE ('%tree%')
Run Code Online (Sandbox Code Playgroud)
':*' 是指定前缀匹配。
| 归档时间: |
|
| 查看次数: |
15370 次 |
| 最近记录: |