使い方ts_debug
私はPostgresが(私が何を呼んでいるのか) "単語の区切り"として何の記号を扱うのか分かります。PostgreSQL全文検索:「単語区切り」として分類されるものを変更するにはどうすればよいですか?
例:
SELECT ts_debug('english', 'Hello. ABC')
結果:
(asciiword,"Word, all ASCII",Hello,{english_stem},english_stem,{hello})
(blank,"Space symbols",". ",{},,)
(asciiword,"Word, all ASCII",ABC,{english_stem},english_stem,{abc})
.
(ドット領域)がワードセパレータとして扱われます。 私の問題は、単一のドット.
を単語区切り文字として扱うにはPostgresが必要です。
現在、ABC
を検索した場合、内容がHello.ABC
(ドットの後ろにスペースはありません)のエントリが見つかりません。Hello. ABC
のみが見つかります。
私はこの検索クエリを使用しています:IOException
を検索すると、単語の区切りとして(スペースなし)単一のドットを治療する方法はありjava.io.IOException
見つけることができません。
SELECT description FROM incident WHERE
to_tsvector('english', description) @@ to_tsquery('english', 'ABC')
別の例
?
PostgresのFTSを設定するには、そんなに選択肢がありますが、私は私がちゃんと考えていましたこれは簡単です。しかし、あなたの提案された回避策は私の場合には問題ありません。ありがとう! – Leif
@Leif:正規表現は高価です。 'translate( 'Hello/ABC'、 '/。'、 '')'(2 space char!)が高速です。 –
真。私は答えを更新しました。 –