2016-08-04 7 views
0

これは期待通りに動作します:フルテキスト検索のための設定postgresqlトークンはどのようになっていますか?

# select to_tsvector('SICK FOTOCEL VS#VE180-P132') @@ 'p132'::tsquery; 
?column? 
---------- 
t 

しかし、「#」のに置き換えられたときに「/」私はVS/VE180-P132は、ファイル・トークンとして分類されているためです

# select to_tsvector('SICK FOTOCEL VS/VE180-P132') @@ 'p132'::tsquery; 
?column? 
---------- 
f 

を取得します。これは私たちのユースケースでは正しくありません。どのように私はこの動作を変更するのですか?たとえば、トークンタイプの電子メール、URL、およびファイルを削除しますか?

答えて

0

あなたはC.

で新しいパーサを書きたいしかし、あなたがそれらにフルテキスト検索を使用する前に、すべての文字列に特定の文字を置き換えるの回避策を使用することができない限り、あなたはこの動作を変更することはできません。

SELECT to_tsvector(regexp_replace('SICK FOTOCEL VS/VE180-P132', '[/.]', ' ')) 
     @@ to_tsquery(regexp_replace('p132', '[/.]', ' ')); 
+0

この回避策は実際には醜いです。しかし、これが実際にそれを行う唯一の方法であれば、私はこれを受け入れる必要があります:) – rmuller

+0

インデックスを定義することもできます。手で入力する必要がない限り、それほど悪くはありません。 –