Class: Deepsearch::Engine::Steps::ParallelSearch::Search

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

Overview

Performs concurrent web searches for a list of queries using a given search adapter. It manages concurrency, retries with exponential backoff for failed searches, and aggregates the unique results.

Constant Summary collapse

MAX_CONCURRENCY =
2
MAX_RETRIES =
1
INITIAL_BACKOFF =
1

Instance Method Summary collapse

Constructor Details

#initialize(initial_query, sub_queries, search_adapter, **options) ⇒ Search

Returns a new instance of Search.



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

def initialize(initial_query, sub_queries, search_adapter, **options)
  @all_queries = [initial_query] + sub_queries
  @search_adapter = search_adapter
  @max_total_search_results = options[:max_total_search_results]
  @search_options = build_search_options
  @logger = Deepsearch.configuration.logger
end

Instance Method Details

#outputObject



26
27
28
29
30
31
# File 'lib/deepsearch/engine/steps/parallel_search/search.rb', line 26

def output
  return [] if @all_queries.empty?

  results = perform_all_searches
  results.flatten.uniq { |result| result['url'] }
end