Class: Workarea::Admin::SearchAnalysisViewModel
- Inherits:
-
ApplicationViewModel
- Object
- ApplicationViewModel
- Workarea::Admin::SearchAnalysisViewModel
- Defined in:
- app/view_models/workarea/admin/search_analysis_view_model.rb
Defined Under Namespace
Classes: ScoredProduct
Instance Method Summary collapse
- #last_used_customization ⇒ Object
- #middleware ⇒ Object
- #scores ⇒ Object
- #storefront_search ⇒ Object
- #tokens ⇒ Object
- #trace ⇒ Object
Instance Method Details
#last_used_customization ⇒ Object
46 47 48 |
# File 'app/view_models/workarea/admin/search_analysis_view_model.rb', line 46 def last_used_customization trace.last.query.customization end |
#middleware ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'app/view_models/workarea/admin/search_analysis_view_model.rb', line 27 def middleware @middleware ||= begin past_last = false storefront_search.create_middleware_chain.reduce({}) do |memo, middleware| status = if past_last :ignore elsif middleware.is_a?(storefront_search.used_middleware.last.class) :last else :pass end past_last = middleware.is_a?(storefront_search.used_middleware.last.class) unless past_last memo.merge(middleware.class => status) end end end |
#scores ⇒ Object
13 14 15 16 17 18 19 20 21 |
# File 'app/view_models/workarea/admin/search_analysis_view_model.rb', line 13 def scores @scores ||= storefront_search.response.query.results.map do |result| ScoredProduct.new( ProductViewModel.wrap(result[:model]), result[:raw]['_score'], last_used_customization.featured_product?(result[:model].id) ) end end |
#storefront_search ⇒ Object
9 10 11 |
# File 'app/view_models/workarea/admin/search_analysis_view_model.rb', line 9 def storefront_search @storefront_search ||= Search::StorefrontSearch.new(q: model.query) end |
#tokens ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'app/view_models/workarea/admin/search_analysis_view_model.rb', line 50 def tokens @tokens ||= begin terms_used = trace.last.query.query_string.sanitized = Workarea .config .elasticsearch_settings .dig(:analysis, :analyzer, :text_analyzer) .except(:char_filter) .merge(index: Search::Storefront.current_index.name, text: terms_used) Workarea.elasticsearch.indices.analyze()['tokens'].reduce({}) do |memo, result| memo.merge(result['token'] => result['type'].gsub(/\W/, '')) end end end |
#trace ⇒ Object
23 24 25 |
# File 'app/view_models/workarea/admin/search_analysis_view_model.rb', line 23 def trace storefront_search.response.trace end |