Setting Up the Index
We now know that the index is made up of documents, which, in turn, are made up of fields. What happens to the fields when they are added to the index? Are they all treated equally? By default, the answer is yes: each field is created with the same properties. But this is not always desirable. For example, Ferret stores all the text in all the fields unmodified by default. If you are indexing data from a database, this may not be necessary. Since you are already storing the data in the database, it is often pointless to store it in the Ferret index as well.[2]
FieldInfo
Each field in a Ferret index has its properties defined in a Ferret::Index::FieldInfo object. A
FieldInfo is an immutable class with
the following properties:
namebooststored?compressed?indexed?tokenized?omit_norms?store_term_vectors?store_positions?store_offsets?
The FieldInfo#name property is
a symbol used to match the FieldInfo
object with a field in a document. FieldInfo#boost is
the default boost that is given to each instance of the field when it is
added to the index. This is where, for example, you would boost the
:title field if you wanted it to have
more weight in the search results than the :content field. The default value for #boost is 1.0.
The rest of these properties can be divided into three groups:
store, index, and term_vector. These
are the other parameters you can use to instantiate a new FieldInfo object. For example:
field_info=FieldInfo.new(:title,:default_boost ...
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