我需要一些帮助,使用pgAdminIII让SQL在PostgreSQL 9.5.1中工作。我所拥有的是Facebook状态的列status
(数据类型,文本),其格式为输入格式,另一列status_tsv
存储状态列的tsvector,其中删除了停用词并且词语为词干。
我希望通过比较自连接中tsvector列的相似性来找到类似的状态。
到目前为止,我已经尝试使用regexp_replace函数结合pg_trgm相似性搜索来仅保留tsvector列中的a-zA-Z字符集,但这并没有像regexp_replace那样工作说它不能执行tsvector列,以便我将tsv列的数据类型更改为文本。
现在的问题是它只比较了每一行中第一个单词的相似性而忽略了其余部分,显然这没用,我需要它来比较整行。
我的SQL现在看起来像
`SELECT * FROM status_table AS x
JOIN status_table AS y
ON ST_Dwithin (x.geom54032, y.geom54032,5000)
WHERE status_similarity (x.tsvector_status, y.tsvector_status) > 0.7
AND x.status_id != y.status_id;`
status_similarity
执行此操作`(regexp_replace(x.tsvector_status,' [^ a-zA-Z]','',' g& #39;),regexp_replace(y.tsvector_status,' [^ a-zA-Z]','',' g'))我和# 39;确保只保留tsvector_status列中的a-zA-Z。
我必须更改什么才能让这种状态恢复相似状态'?