我有一张列为字符串的桌子。我想删除停止语。我用了这个看起来不错的问题。

SELECT to_tsvector('english',colName)from tblName order by colName asc;

它不更新表中的列
我想看看Postgresql的停止字和查询结果,然后用我自己的文件替换它。我也检查了这个地址,找不到停止词列表文件。实际上,地址不存在。
$SHAREDIR/tsearch_data/english.stop

最佳答案

没有任何功能可以做到这一点。
您可以使用这样的东西(在这个德语示例中):

SELECT array_to_string(tsvector_to_array(to_tsvector('Hallo, Bill und Susi!')), ' ');
 array_to_string
-----------------
 bill hallo susi
(1 row)

这去掉了停止语,也去掉了词干和非词性,而且也不在乎词序,所以我怀疑结果会不会让你开心。
如果这不符合要求,您可以使用这样的regexp_replace
SELECT regexp_replace('Bill and Susi, hand over or die!', '\y(and|or|if)\y', '', 'g');
       regexp_replace
-----------------------------
 Bill  Susi, hand over  die!
(1 row)

但这需要在查询字符串中包含停止字列表。改进后的版本会将停止字存储在表中。

08-28 02:36