O'Reilly logo

Ferret by David Balmain

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Chapter 2. Indexing

When you are indexing with Ferret, you need to know about the following classes:

  • Ferret::Store::Directory

  • Ferret::Index::FieldInfo

  • Ferret::Index::FieldInfos

  • Ferret::Field

  • Ferret::Document

  • Ferret::Index::IndexWriter

  • Ferret::Index::IndexReader

We will discuss each of these classes in this chapter. We’ll begin by discussing index storage. This involves looking at the two implementations of the Directory class: RAMDirectory and FSDirectory. After that, we’ll look at the building blocks of the Ferret index—the Field and Document classes—and we’ll discuss document and field boosting. We’ll then look at setting up the index. This involves using the FieldInfo and FieldInfos class and is probably the most important topic in this chapter. Finally, we’ll discuss how the actual indexing process works, at which time you’ll learn when to use the IndexReader and IndexWriter classes. Readers should pay special attention to the Index Locking and Concurrency Issues” section in Chapter 3, as it seems to be the biggest problem area for new users in Ferret.

Index Storage

Ferret indexes are stored in a Ferret::Store::Directory. Directory is an abstract class that specifies how an index should be stored. Ferret comes packaged with two implementations of the Directory class: Ferret::Store::FSDirectory for storing the index on the filesystem, and Ferret::Store::RAMDirectory for storing an index in memory. You’ve used both of these classes already: RAMDirectory in Example 1-1 and ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required