2017-02-01 7 views
0

私は文字列を持つテーブルを持っています。私はストップワードを削除したい。私はOkと思われるこのクエリを使用しました。postgresqlの文字列からストップワードを削除する方法

SELECT to_tsvector('english',colName)from tblName order by colName asc; 
  1. それは私が停止にpostgresqlの言葉とどのようなケースでは、クエリfound.Thenは、私は自分のファイルに置き換えることができますを見てみたい

  2. テーブル

    で列を更新しません。私もこのアドレスをチェックし、ストップワードリストファイルを見つけることができませんでした。実際には、アドレスは存在しません。

    $SHAREDIR/tsearch_data/english.stop 
    
+0

@GurV:編集ありがとうございました – Raha1986

+0

あなたのデータディレクトリは何ですか? 'show data_directory' –

+0

質問は明確ではありません。テーブルのデータを変更しますか?これは 'UPDATE'で行われます。英語のストップワードは、データベースマシン上の* sharedir *のサブディレクトリ 'tsearch_data'にあります。これは' pg_config --sharedir 'で見つけることができます。 –

答えて

1

それを行うための機能はありません。

あなたは(ドイツ語で、この例では)このようなもの使用することができます。これは、言葉を止め削除するだけでなく、茎および非言葉

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) 

しかし、それはあなたがクエリ文字列にストップワードのリストが含まれている必要があります。改善されたバージョンは、ストップワードをテーブルに格納する。

+0

実際には、特定の単語がユーザーにどのように配信されているかを調べたいと思います。私は正確な言葉を知る必要があります。しかし、単語を使用する別の方法、多くの文字、省略形、私はそれらを取り除く必要がある奇妙なスタッフがあります。私は言葉を分割し、すべてのナンセンス文字と単語を削除する必要があります。 – Raha1986

+0

残念ながら、言葉の形をつけて入れ替えることは、自分のデータでやりたいことの最後です。多分私は正規表現を使用してインデックスを取り除くことができます。 – Raha1986

+0

私はこの正規表現を ':\ d'というクエリで使用するのに問題はありますか? – Raha1986

関連する問題