我有一张列为字符串的桌子。我想删除停止语。我用了这个看起来不错的问题。
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)
但这需要在查询字符串中包含停止字列表。改进后的版本会将停止字存储在表中。