Highlighting Query Results
Query highlighting, like excerpting, is one of the newer features
in Ferret, added in version 0.10. Highlighting takes a query and returns
the data from a document field with all of the matches in the field
highlighted. Excerpting, on the other hand, takes excerpts from the
field, preferably with matching terms, and highlights the terms in those
excerpts. Both Ferret::Search::Searcher
and Ferret::Index::Index classes have a
highlight method. In this section, we’ll look at Index#highlight because it allows us to pass
string queries instead of having to build Query objects
(see Table 4-3). Otherwise, both methods are essentially
the same. To use the highlight method,
you must supply a query and the document ID of the document you wish to
highlight. A number of other parameters can be used to describe exactly
how you want to highlight the field.
Table 4-3. Index#highlight parameters
| Parameter | Description |
|---|---|
:field
| Defaults to @options[:default_field]. The
highlighter only works on one field at a time, so you need to
specify which field it is you want to highlight. If you want to
highlight multiple fields, you'll need to call this method
multiple times. |
:excerpt_length
| Defaults to 150 bytes. This parameter specifies the length
of excerpt to show. The algorithm for extracting excerpts attempts
to fit as many matched terms into each excerpt as possible. If
you’d simply like the complete field back with all matches
highlighted, set this parameter to :all. |
:num_excerpts ... |
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access