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.