1
下面PostgreSQL的文本搜索我怎样才能得到PostgreSQL的文本搜索中排名
select
ID, DISPLAY_NAME,
ts_rank_cd(to_tsvector('english', display_name), query) as RANK
from
my_table,
to_tsquery('english', 'John:*&Bernard:*') as query
where
to_tsvector('english', display_name) @@ query
order by RANK DESC
产生
ID DISPLAY_NAME RANK
=====================================
82683 "BERNARD JOHN SMBZh" 0.05
63815 "BERNARD JOHN []zkP" 0.05
68204 "BERNARD JOHN uPmYB" 0.05
29666 "John Bernard iECx" 0.05
44256 "John Bernard DpIff" 0.05
52601 "BERNARD JOHN ivRTX" 0.05
80250 "BERNARD JOHN b'nVp" 0.0430677
,但我真的想是的“约翰·伯纳德使用的搜索字词顺序* “记录具有较高的排名,因为”文档“中的词语以与查询相同的顺序出现。这可能吗?
例如像这样的结果:
ID DISPLAY_NAME RANK
=====================================
29666 "John Bernard iECx" 0.10
44256 "John Bernard DpIff" 0.10
82683 "BERNARD JOHN SMBZh" 0.05
63815 "BERNARD JOHN []zkP" 0.05
68204 "BERNARD JOHN uPmYB" 0.05
52601 "BERNARD JOHN ivRTX" 0.05
80250 "BERNARD JOHN b'nVp" 0.0430677
干杯 克雷格
添加另一个ts_query没有通配符。然后在select中,在新查询中添加另一个to_rank_cd。对于选择性较低的查询匹配但不具有更多选择性的情况,这需要进行加入。现在,按主要等级和次要等级排序。 – 2011-02-26 20:42:43
你使用的是什么版本的postgres? 'select to_tsquery('english','John:*&Bernard:*');'给出8.3 – 2011-02-28 11:21:16
的语法错误好的,必须是8.4或更高 – 2011-02-28 11:58:33