tsvector中的词素位置

时间:2019-05-20 12:35:07

标签: postgresql full-text-search tsvector

我有以下几行文字:

"Blue pill"; "Red pill"; "Blue shift"; "Red eye"

我想选择其中Red是第一个单词或Pill是第二个单词的行。假设地,可以使用tsquerytsvector来完成,因为tsvector的输出还包含每个词素的位置。但是,我找不到任何允许按其编号访问向量词素的函数。 是否有任何适当的方法来选择在定义位置匹配ts_query的行?

1 个答案:

答案 0 :(得分:2)

使用tsvector进行此操作是可能的

select ClientID, ClientREF,
       max(case when seqnum = 1 then AgentID end) AS FirstOFAgentID, F      
       max(case when seqnum = 1 then AgentREF end) AS FirstOFAgentREF
from (select ClientID, ClientREF, AgentID, AgentREF,
             row_number() over (partition by ClientID, ClientREF order by ?) as seqnum
      from table 1 Right join
           table2
           ON table1 = table2 Left join
           table 4
           ON table1 = table4
     ) cc   
group by ClientID, ClienREF;

不过,我认为使用正则表达式可能更容易。