Sha256: 2940313e5ba4765d6c60e787878ed7cdd0221449dcb47b1091a45449ea5aa374

Contents?: true

Size: 1.25 KB

Versions: 4

Compression:

Stored size: 1.25 KB

Contents

# Enable Postgresql full text indexing.
#
module Alchemy::PgSearch::PageExtension
  def self.extended(base)
    base.include InstanceMethods
    base.include PgSearch::Model

    base.pg_search_scope(
      :full_text_search,
      against: {
        meta_description: "B",
        meta_keywords: "B",
        title: "B",
        name: "A",
      },
      associated_against: {
        searchable_essence_texts: :body,
        searchable_essence_richtexts: :stripped_body,
        searchable_essence_pictures: :caption,
      },
      using: {
        tsearch: { prefix: true },
      },
    )

    base.has_many(
      :searchable_contents,
      -> {
        where(alchemy_elements: { public: true })
          .where(searchable: true)
      },
      class_name: "Alchemy::Content",
      through: :all_elements,
    )

    Alchemy::PgSearch::SEARCHABLE_ESSENCES.each do |klass|
      base.has_many(
        :"searchable_#{klass.underscore.pluralize}",
        class_name: "Alchemy::#{klass}",
        source_type: "Alchemy::#{klass}",
        through: :searchable_contents,
        source: :essence,
      )
    end
  end

  module InstanceMethods
    def element_search_results(query)
      all_elements.full_text_search(query)
    end
  end

  Alchemy::Page.extend self
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
alchemy-pg_search-3.0.0 lib/alchemy/pg_search/page_extension.rb
alchemy-pg_search-2.4.0 lib/alchemy/pg_search/page_extension.rb
alchemy-pg_search-2.3.0 lib/alchemy/pg_search/page_extension.rb
alchemy-pg_search-2.2.0 lib/alchemy/pg_search/page_extension.rb