如何从 postgresql 中的字符串列中删除我的停用词

how to remove my stop words from a string column in postgresql

我有一个带有字符串列的 table。我想删除停用词。我使用了这个看起来不错的查询。

SELECT to_tsvector('english',colName)from tblName order by colName asc;
  1. 它不会更新 table

  2. 中的列
  3. 我想看看 Postgresql 的停用词和查询内容 found.Then 以防我可以用我自己的文件替换它。我也查了这个地址,也没有找到停用词列表文件。实际上,该地址不存在。

    $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)

这去除了停用词,但也去除了词干和 non-words,而且它不关心词序,所以我怀疑结果会让你满意。

如果这不符合要求,您可以像这样使用 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)

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

选择的答案与我的要求不符,但我找到了解决方案:

SELECT regexp_replace('Bill and Susi, hand over or die!', '[^ ]*$','');

regexp_replace
-----------------------------
Bill and Susi, hand over or 
(1 row)