Sha256: 26b83d338bb2f4d40dcd4f00d8c3cce81cc399d060fd8b0fb5518593b24759d1

Contents?: true

Size: 1.05 KB

Versions: 27

Compression:

Stored size: 1.05 KB

Contents

module PgSearch
  module Features
    class DMetaphone
      def initialize(query, options, columns, model, normalizer)
        dmetaphone_normalizer = Normalizer.new(normalizer)
        options = (options || {}).merge(:dictionary => 'simple')
        @tsearch = TSearch.new(query, options, columns, model, dmetaphone_normalizer)
      end

      def conditions
        tsearch.conditions
      end

      def rank
        tsearch.rank
      end

      private

      attr_reader :tsearch

      # Decorates a normalizer with dmetaphone processing.
      class Normalizer
        def initialize(normalizer_to_wrap)
          @normalizer_to_wrap = normalizer_to_wrap
        end

        def add_normalization(original_sql)
          otherwise_normalized_sql = Arel.sql(
            normalizer_to_wrap.add_normalization(original_sql)
          )

          Arel::Nodes::NamedFunction.new(
            "pg_search_dmetaphone",
            [otherwise_normalized_sql]
          ).to_sql
        end

        private

        attr_reader :normalizer_to_wrap
      end
    end
  end
end

Version data entries

27 entries across 27 versions & 1 rubygems

Version Path
pg_search-2.1.3 lib/pg_search/features/dmetaphone.rb
pg_search-2.1.2 lib/pg_search/features/dmetaphone.rb
pg_search-2.1.1 lib/pg_search/features/dmetaphone.rb
pg_search-2.1.0 lib/pg_search/features/dmetaphone.rb
pg_search-2.0.1 lib/pg_search/features/dmetaphone.rb
pg_search-2.0.0 lib/pg_search/features/dmetaphone.rb
pg_search-1.0.6 lib/pg_search/features/dmetaphone.rb
pg_search-1.0.5 lib/pg_search/features/dmetaphone.rb
pg_search-1.0.4 lib/pg_search/features/dmetaphone.rb
pg_search-1.0.3 lib/pg_search/features/dmetaphone.rb
pg_search-1.0.2 lib/pg_search/features/dmetaphone.rb
pg_search-1.0.1 lib/pg_search/features/dmetaphone.rb
pg_search-1.0.0 lib/pg_search/features/dmetaphone.rb
pg_search-0.7.9 lib/pg_search/features/dmetaphone.rb
pg_search-0.7.8 lib/pg_search/features/dmetaphone.rb
pg_search-0.7.7 lib/pg_search/features/dmetaphone.rb
pg_search-0.7.6 lib/pg_search/features/dmetaphone.rb
pg_search-0.7.5 lib/pg_search/features/dmetaphone.rb
pg_search-0.7.4 lib/pg_search/features/dmetaphone.rb
pg_search-0.7.3 lib/pg_search/features/dmetaphone.rb