# PgSearchMultipleHighlight The `pg_search_multiple_highlight` gem extends the functionality of the popular `pg_search` gem to overcome its limitation when performing searches against multiple columns and attempting to highlight results. The core issue arises when using the `:highlight` option within the `:tsearch` scope on multiple columns. This gem addresses this limitation by introducing the `:multiple_highlight` option, offering a comprehensive solution for highlighting results across multiple columns. ## Installation To install the gem run the following command in the terminal: $ bundle add pg_search_multiple_highlight If bundler is not being used to manage dependencies, install the gem by executing: $ gem install pg_search_multiple_highlight ## Usage To extend functionality of the `pg_search` gem, require the gemfile in the same file, where a PgSearch module is included: ```ruby require 'pg_search_multiple_highlight' class Shape < ActiveRecord::Base include PgSearch::Model end ``` Usage of the `:multiple_highlight` is similar to the standard `:highlight`. Adding `.with_pg_search_multiple_highlight` after the `pg_search_scope` you can access `pg_multiple_highlight` attribute for each object. ```ruby require 'pg_search_multiple_highlight' class Article < ActiveRecord::Base include PgSearch::Model pg_search_scope :search, against: { title: 'A', description: 'B' }, using: { tsearch: { multiple_highlight: { StartSel: '', StopSel: '', MaxWords: 400, MinWords: 200, ShortWord: 4, HighlightAll: true, MaxFragments: 3, FragmentDelimiter: '…' } } } end Article.create!(:title => "Quick brown fox", :description => "The quick brown fox jumps over the lazy dog.") first_match = Article.search("brown").with_pg_search_multiple_highlight.first first_match.pg_search_multiple_highlight # => {:id=>1, # :title=>"Quick brown fox", # :description=>"The quick brown fox jumps over the lazy dog."} ``` ## Contributing Bug reports and pull requests are welcome at https://github.com/msuliq/pg_search_multiple_highlight. The best way to contribute would be to fork this repo, create a new branch from main, to merge the branch into main of the fork once the new code is in place and then open a pull request to merge forked main into the main of the present repo. ## License The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT). ## Code of Conduct Everyone interacting in the PgSearchMultipleHighlight project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/msuliq/pg_search_multiple_highlight/blob/main/CODE_OF_CONDUCT.md).