wiki:PerformanceImprovementInSearch

Performance improvement to Search (originating from Nationaal Georegister)

Date 2009/09/03
Contact(s) Heikki Doeleman
Last edited Timestamp
Status Motion passed
Assigned to release 2.5
Resources The work may be done in the NGR project

Overview

By reducing the number of XSLT transformations, a drastic performance improvement can be achieved.

Proposal Type

  • Type: Core Change
  • App: GeoNetwork
  • Module: Search engine

Voting History

  • Vote proposed September 14th 2009
  • Votes:
    • Simon Pigot +1
    • François Prunayre +1
    • Jeroen Ticheler +1
    • No further objections

Motivations

The motivations for these changes are :

1. A better performance is preferred

Proposal

In current GeoNetwork, the search from the main page works as follows: the request with search parameters is sent to GeoNetwork and is turned into a JDOM structure by Jeeves; this request object is processed in XSLT (lucene.xsl), the result of which is a different JDOM structure; this in turn is further processed in Java to create the actual Lucene query.

This proposal removes the step of XSLT processing by lucene.xsl. The function of lucene.xsl is exactly re-built in Java (LuceneQueryBuilder.java). The resulting Lucene query is not changed in this proposal.

All search types that use LuceneSearcher.java (such as search from the GUI and CSW search) are affected by this proposal, but none needs any change as the interface to LuceneSearcher.java has not changed.

LuceneQueryBuilder.java was developed test-first and as a result, it's well covered by a unit test.

A second performance gain is effected by a change to retrieving the regions data in the search service. In standard GeoNetwork, the regions are retrieved from the DB at each search request; in this proposal, it happens only once, after which the regions data is kept in memory for application lifetime.

Performance metrics from YourKit Java Profiler show that this change leads to a 90% performance increase of the search service as such (excluding the request and response handling in the Web application framework surrounding it).

Jeroen says: "add list of all search parameters". But I'm not doing it, because they are not changed in any way, in this proposal.

Backwards Compatibility Issues

none

Risks

Participants

  • As above
Last modified 15 years ago Last modified on 09/22/09 01:26:36
Note: See TracWiki for help on using the wiki.