2

我需要一些帮助,让 SQL 使用 pgAdminIII 在 PostgreSQL 9.5.1 中工作。我所拥有的是statusFacebook 状态的一列(数据类型,文本),其格式为输入格式,另一列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'), regexp_replace(y.tsvector_status, '[^a-zA-Z]', '', 'g')) 我确定只保留 tsvector_status 列中的 a-zA-Z。

我必须改变什么才能获得这种返回相似状态'?

4

0 回答 0