これは本当に基本的な質問のようですが、pg_trgm拡張機能のデフォルトの制限を変更するにはどうすればよいですか?これは現在0.3です。私はやった:
select set_limit(0.5)
select show_limit() => 0.5
接続を閉じて、再接続します。
select show_limit() => 0.3
ご協力いただきありがとうございます。
これは本当に基本的な質問のようですが、pg_trgm拡張機能のデフォルトの制限を変更するにはどうすればよいですか?これは現在0.3です。私はやった:
select set_limit(0.5)
select show_limit() => 0.5
接続を閉じて、再接続します。
select show_limit() => 0.3
ご協力いただきありがとうございます。
Postgres 9.6以降pg_trgm
、Grand Unified Configuration(GUC)システムを利用しているため、追加するクラスターレベル、DBレベル()、またはGUCで許可されている他のすべてのレベル(ユーザーごと、機能ごと)でデフォルトを設定pg_trgm.similarity_threshold = 0.5
できpostgresql.conf
ますalter database myDB set pg_trgm.similarity_threshold = 0.5
。等)
これはおそらく解決策ではなく、潜在的な解決策への貢献です...
(インタラクティブな接続だけでなく、DBへのすべての接続にpg_trgmパラメーターが必要だと思いますか?)
デフォルトの0.3制限は、関数にハードコーディングされているようです。
trgm_op.c:
PG_MODULE_MAGIC;
float4 trgm_limit = 0.3f;
構成ファイルを介して制御できるかどうかわからないため、1つのオプションとして、ソースファイルのデフォルトを変更し、拡張機能を再構築することができます。
Ruby on Rails環境でこれを行う方法を調べているときに、これに遭遇しました。結局、私のアダプターにモンキーパッチを適用しました:
require 'active_record/connection_adapters/postgresql_adapter'
class ActiveRecord::ConnectionAdapters::PostgreSQLAdapter
private
alias_method :default_configure_connection, :configure_connection
# Monkey patch configure_connection because set_limit() must be called on a per-connection basis.
def configure_connection
default_configure_connection
begin
execute("SELECT set_limit(0.1);")
rescue ActiveRecord::StatementInvalid
Rails.logger.warn("pg_trgm extension not enabled yet")
end
end
end
他の人がこの問題を抱えているのを見た後、このルートに行きました、例えばhttps://github.com/textacular/textacular/issues/39