close

Filter

loading table of contents...

Search Manual / Version 2010

Table Of Contents

5.4.5 Using Revalidating Fragments

When computing the data for a feedable, dependencies on accessed objects are tracked and recorded by the CAE Feeder. Modifications of recorded dependencies will lead to the invalidation of the feedable. The CAE Feeder will then construct a new feedable with recomputed data and send it to the search engine. For example, a content bean will be reindexed after changing some content that was used to compute the feedable for that content bean.

In some cases, however, the invalidation of a dependency does not necessarily lead to a different value for feeding and the overhead of reindexing could be avoided for better performance.

For example, an indexed bean property gets its data from a content with global settings. Such a content may contain lots of different settings in different properties or in a single struct property. Imagine, that a single setting S1 from this content is accessed during the construction of each indexed feedable. Because of this, each indexed bean will depend on the properties of the settings content. Now, if somebody changes the content, for example by changing setting S2, all indexed beans will be invalidated and reindexed. This can take some time. And the data did not even change.

Of course, you want to avoid such situations. One possibility is to disable such expensive dependencies by wrapping the code that creates them with the methods disableDependencies() and enableDependencies() of the class com.coremedia.cache.Cache. But often this is not possible, because sometimes an invalid dependency really indicates changed data and the index must be updated. To solve this problem, the CAE Feeder supports fragment keys, which can be used to revalidate an unchanged result of a computation after some of its dependencies became invalid. Revalidation means that the CAE Feeder recognizes that an invalidation of a dependency does not change the result so that expensive reindexing can be skipped.

Caution

Caution

Revalidating fragment keys should be used when it's possible to encapsulate a fragment that is used for the computation of many feedables, and if dependencies get invalidated without changing the feedable's data.

You should not use fragment keys, if each fragment is used in just one feedable instance. The overhead of maintaining a lot of fragment keys in the CAE Feeder can be much higher than reindexing a few content beans. The number of fragment keys should be lower than the number of indexed content beans, for which the fragment keys are used.

This section continues with an example how to use revalidating fragments to avoid unnecessary reindexing.

Search Results

Table Of Contents