diff --git a/app/services/search_indexer.rb b/app/services/search_indexer.rb index f731e52e87e..92194d121e9 100644 --- a/app/services/search_indexer.rb +++ b/app/services/search_indexer.rb @@ -190,9 +190,25 @@ class SearchIndexer document = Nokogiri::HTML("
#{html}
", nil, Encoding::UTF_8.to_s) - document.css( + nodes = document.css( "div.#{CookedPostProcessor::LIGHTBOX_WRAPPER_CSS_CLASS}" - ).remove + ) + + if nodes.present? + nodes.each do |node| + node.traverse do |child_node| + next if child_node == node + + if %w{a img}.exclude?(child_node.name) + child_node.remove + elsif child_node.name == "a" + ATTRIBUTES.each do |attribute| + child_node.remove_attribute(attribute) + end + end + end + end + end document.css("a[href]").each do |node| node.remove_attribute("href") if node["href"] == node.text diff --git a/spec/services/search_indexer_spec.rb b/spec/services/search_indexer_spec.rb index 5aa9f21da68..9290b6737b8 100644 --- a/spec/services/search_indexer_spec.rb +++ b/spec/services/search_indexer_spec.rb @@ -61,7 +61,7 @@ describe SearchIndexer do scrubbed = scrub(html) - expect(scrubbed).to eq("Discourse 51%20PM") + expect(scrubbed).to eq("Discourse 51%20PM Untitled%20design%20(21)") end it 'correctly indexes a post according to version' do @@ -137,7 +137,7 @@ describe SearchIndexer do post = Fabricate(:post, raw: <<~RAW) Let me see how I can fix this image - + white walkers RAW post.rebake! @@ -149,7 +149,7 @@ describe SearchIndexer do ) expect(post.post_search_data.raw_data).to eq( - "#{topic.title} #{topic.category.name} Let me see how I can fix this image" + "#{topic.title} #{topic.category.name} Let me see how I can fix this image white walkers GOT" ) end end