Class: Decidim::EnhancedTextwork::SimilarParagraphs

Inherits:
Rectify::Query
  • Object
show all
Includes:
TranslationsHelper
Defined in:
app/queries/decidim/enhanced_textwork/similar_paragraphs.rb

Overview

Class used to retrieve similar paragraphs.

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(components, paragraph) ⇒ SimilarParagraphs

Initializes the class.

components - Decidim::CurrentComponent paragraph - Decidim::EnhancedTextwork::Paragraph



21
22
23
24
25
# File 'app/queries/decidim/enhanced_textwork/similar_paragraphs.rb', line 21

def initialize(components, paragraph)
  @components = components
  @paragraph = paragraph
  @translations_enabled = paragraph.component.organization.enable_machine_translations
end

Class Method Details

.for(components, paragraph) ⇒ Object

Syntactic sugar to initialize the class and return the queried objects.

components - Decidim::CurrentComponent paragraph - Decidim::EnhancedTextwork::Paragraph



13
14
15
# File 'app/queries/decidim/enhanced_textwork/similar_paragraphs.rb', line 13

def self.for(components, paragraph)
  new(components, paragraph).query
end

Instance Method Details

#queryObject

Retrieves similar paragraphs



28
29
30
31
32
33
34
35
36
37
38
39
# File 'app/queries/decidim/enhanced_textwork/similar_paragraphs.rb', line 28

def query
  Decidim::EnhancedTextwork::Paragraph
    .where(component: @components)
    .published
    .not_hidden
    .where(
      "GREATEST(#{title_similarity}, #{body_similarity}) >= ?",
      *similarity_params,
      Decidim::EnhancedTextwork.similarity_threshold
    )
    .limit(Decidim::EnhancedTextwork.similarity_limit)
end