diff --git a/lib/search/grouped_search_results.rb b/lib/search/grouped_search_results.rb index 7f22c16f6f6..23a4b126432 100644 --- a/lib/search/grouped_search_results.rb +++ b/lib/search/grouped_search_results.rb @@ -9,6 +9,27 @@ class Search class TextHelper extend ActionView::Helpers::TextHelper + + private + + # TODO: Remove when https://github.com/rails/rails/pull/39979 is merged + # For a 10_000 words string, speeds up excerpts by 85X. + def self.cut_excerpt_part(part_position, part, separator, options) + return "", "" unless part + + radius = options.fetch(:radius, 100) + omission = options.fetch(:omission, "...") + + if separator != "" + part = part.split(separator) + part.delete("") + end + + affix = part.length > radius ? omission : "" + part = part.public_send(part_position == :first ? :last : :first, radius) + part = part.join(separator) if separator != "" + return affix, part + end end attr_reader(