Changes between Initial Version and Version 1 of PerformanceImprovementInSearch


Ignore:
Timestamp:
09/03/09 04:19:25 (15 years ago)
Author:
heikki
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • PerformanceImprovementInSearch

    v1 v1  
     1= Performance improvement to Search (originating from [http://nationaalgeoregister.nl Nationaal Georegister]) =
     2
     3|| '''Date''' || 2009/09/03 ||
     4|| '''Contact(s)''' || [http://wiki.osgeo.org/wiki/User:Heikki Heikki Doeleman] ||
     5|| '''Last edited''' || [[Timestamp]] ||
     6|| '''Status''' || draft ||
     7|| '''Assigned to release''' || 2.5 ||
     8|| '''Resources''' || The work may be done in the NGR project ||
     9
     10== Overview ==
     11
     12By reducing the number of XSLT transformations, a drastic performance improvement can be achieved.
     13
     14=== Proposal Type ===
     15 * '''Type''': Core Change
     16 * '''App''': !GeoNetwork
     17 * '''Module''': Search engine
     18
     19=== Links ===
     20 
     21 * '''Email discussions''': on geonetwork-devel: [http://n2.nabble.com/Proposals-to-include-NGR-functionality-to-GeoNetwork-trunk-td3365623.html#a3365623 "Proposals to include NGR functionality to GeoNetwork trunk"]
     22 * '''IRC discussions''': [http://logs.qgis.org/geonetwork/%23geonetwork.2009-09-01.log September 1st, 2009 on GeoNetwork's IRC channel]
     23
     24=== Voting History ===
     25
     26 * None as yet
     27
     28----
     29
     30== Motivations ==
     31The motivations for these changes are :
     32
     33'''1.''' A better performance is preferred
     34
     35== Proposal ==
     36
     37In 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.
     38
     39This 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.
     40
     41All 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.
     42
     43!LuceneQueryBuilder.java was developed test-first and as a result, it's well covered by a unit test.
     44
     45A 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.
     46
     47Performance metrics from !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).
     48
     49TODO Jeroensays: add list of all search parameters (why? they don't change in this proposal)
     50
     51
     52=== Backwards Compatibility Issues ===
     53
     54none
     55
     56== Risks ==
     57
     58== Participants ==
     59 * As above
     60