Basic Indexing Operations
Now that you have the index set up, you are ready to start the
indexing process. Ferret allows two write operations
on an index: add and delete. By
combining these two operations, you
can perform an update operation, which you’ll also
learn about in this section, as well as retrieving documents from the
index. In this section you’ll also get an informal introduction to the
Ferret::Index::IndexReader
and Ferret::Index::IndexWriter
classes through the explanations and examples. You’ll learn more about
these two classes in Chapter 3.
Add
Adding documents to the index is done with the aptly named IndexWriter
class. You’ve already seen how to add documents using the Index
class; if you look under the covers,
you’ll find that the Index
object is
just using an IndexWriter
to write documents to the
index:
index_writer
=
IndexWriter
.
new
(
:path
=>
'
path/to/index
')
documents
.
each
{|
doc
|
index_writer
.
add_document
(
doc
)
}
index_writer
.
commit
()
Notice the commit
method at
the end. None of the changes you make to an index through an IndexWriter
are guaranteed to be applied until
you call either commit
, optimize
, or close
. The commit
method simply applies all changes to
the index, leaving the IndexWriter
open. close
does the same thing, then closes the IndexWriter
.
optimize
is like commit
in that it commits all changes, leaving
the IndexWriter
open for more index modifications. However, it also optimizes the index for searching. This process can be quite resource-intensive and ...
Get Ferret now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.