Class: Deepsearch::Engine::Steps::ParallelSearch::Process

Inherits:
Object
  • Object
show all
Defined in:
lib/deepsearch/engine/steps/parallel_search/process.rb

Overview

Orchestrates the parallel execution of multiple search queries (initial query + sub-queries). It uses the ‘Search` class to perform the actual concurrent searches via a search adapter and wraps the outcome in a `Result` object.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(initial_query:, sub_queries:, search_adapter:, **options) ⇒ Process

Returns a new instance of Process.



16
17
18
19
20
21
22
23
24
# File 'lib/deepsearch/engine/steps/parallel_search/process.rb', line 16

def initialize(initial_query:,
               sub_queries:,
               search_adapter:,
               **options)
  @initial_query = initial_query
  @sub_queries = sub_queries
  @search_adapter = search_adapter
  @options = options
end

Instance Attribute Details

#initial_queryObject (readonly)

Returns the value of attribute initial_query.



14
15
16
# File 'lib/deepsearch/engine/steps/parallel_search/process.rb', line 14

def initial_query
  @initial_query
end

#optionsObject (readonly)

Returns the value of attribute options.



14
15
16
# File 'lib/deepsearch/engine/steps/parallel_search/process.rb', line 14

def options
  @options
end

#search_adapterObject (readonly)

Returns the value of attribute search_adapter.



14
15
16
# File 'lib/deepsearch/engine/steps/parallel_search/process.rb', line 14

def search_adapter
  @search_adapter
end

#sub_queriesObject (readonly)

Returns the value of attribute sub_queries.



14
15
16
# File 'lib/deepsearch/engine/steps/parallel_search/process.rb', line 14

def sub_queries
  @sub_queries
end

Instance Method Details

#executeObject



26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/deepsearch/engine/steps/parallel_search/process.rb', line 26

def execute
  websites = Search.new(initial_query, sub_queries, search_adapter, **@options).output
  Deepsearch.configuration.logger.debug("Parallel search completed with #{websites.size} results")
  ParallelSearch::Result.new(
    websites: websites
  )
rescue StandardError => e
  ParallelSearch::Result.new(
    websites: [],
    error: e.message
  )
end