:PROPERTIES: :ID: 11edd6c9-b976-403b-a419-b5542ddedaae :END: #+title: Subscriber Search Service #+LINK: jira https://jira.aweber.io/browse/ A replacement for the current [[id:d9cb2b55-3b0e-4ab3-8369-f71ebc3cd882][Sites Subscriber Search]] and [[id:f74e335d-577f-4749-bf32-1c025795b039][Broadcast Segment Search]] implementations. - [[https://jira.aweber.io/issues/?jql=project%20%3D%20CCPANEL%20AND%20component%20%3D%20%22Search%20Service%22][JIRA tickets]] * Architecture Notes #+begin_quote Added: [2019-08-06 Tue 10:34] - Broadcast sending manipulated queries before performing them to suit its needs - *Handle list exclusion in the search service?* ([[jira:CCPANEL-9557][CCPANEL-9557]]) - Blocked emails - De-duplication - *Lead view ids -> segment ids -> search service segments?* ([[jira:CCPANEL-9556][CCPANEL-9556]]) - Side-by-side comparison - Use broadcast-segment to compare its results to the search api results - *Recipient-style representation or leads?* - *Define API* ([[jira:CCPANEL-9554][CCPANEL-9554]]) - Include saved searches (segments) - *Iterate release* ([[jira:CCPANEL-9555][CCPANEL-9555]]) - Current UI - New UI with same capabilities of old UI - Still writing old-style segments - Research getting off the leads table (aurora?) - https://confluence.aweber.io/display/AR/Search+Service+Using+Existing+Databases - Distinct from a materialized search-optimized db - Deal with =subscriber_tags= table bloat in AppDB #+end_quote * Concerns ** Performance ** Fitness to Purpose This service will need to fulfill the needs of both end-user subscriber searches and segment emailing. * Interim Solution ** Component Diagram #+BEGIN_SRC plantuml :file search-components.svg database Analytics { database Ana as Ana01 database Ana as Ana02 database Ana as Ana03 } database App database "Results Cache" as ResultsCache component "Search Service" as Service { component Search component Results Search -- Analytics Search -- App Search --> ResultsCache Results <-- ResultsCache } #+END_SRC #+RESULTS: [[file:search-components.svg]] * Resources - [[https://confluence.aweber.io/display/AR/PostgreSQL+Backed+Search][PostgreSQL Backed Search]] (Rejected ACP) - [[https://confluence.aweber.io/display/AR/Search+Proxy+Service][Search Proxy Service]] - +[[https://confluence.aweber.io/display/~robink/SoT+-+ElasticSearch+Next+Steps][SoT - ElasticSearch Next Steps]]+ - [[https://confluence.aweber.io/display/~robink/Alternative+Search+Proposal][Alternative Search Proposal]] - [[https://confluence.aweber.io/display/AR/Search+Service+Using+Existing+Databases][Search Service Using Existing Databases]] (Approved ACP) + [[https://confluence.aweber.io/display/~victorc/Search+Service+-+Proof+of+Concept+Findings][Search Service - Proof of Concept Findings]] (Benchmarks different approaches) + [[https://gitlab.aweber.io/CP/archive/victorc-search-prototype][Search Prototype]] - [[https://confluence.aweber.io/display/AR/Search+DSL+JSON+Schema][Search DSL JSON Schema]]