59 | | 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.[[BR]][[BR]] |
60 | | 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.[[BR]] |
61 | | !LuceneQueryBuilder.java was developed [http://www.extremeprogramming.org/rules/testfirst.html test-first] and as a result, it's well covered by a unit test.[[BR]][[BR]] |
62 | | 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.[[BR]][[BR]] |
63 | | Performance metrics from [http://www.yourkit.com/ YourKit Java Profiler] show that this change leads to a 90% performance increase of the search service as such (excluding the creation of the search results page). |
| 59 | Moved to [http://trac.osgeo.org/geonetwork/wiki/PerformanceImprovementInSearch this proposal] |