From: <sp...@us...> - 2010-03-14 00:00:50
|
Revision: 5835 http://geonetwork.svn.sourceforge.net/geonetwork/?rev=5835&view=rev Author: sppigot Date: 2010-03-14 00:00:42 +0000 (Sun, 14 Mar 2010) Log Message: ----------- Avoid exceesive memory use at startup for large indexes by retrieving lastChangeDate only Modified Paths: -------------- sandbox/BlueNetMEST/src/org/fao/geonet/kernel/DataManager.java sandbox/BlueNetMEST/src/org/fao/geonet/kernel/search/SearchManager.java Modified: sandbox/BlueNetMEST/src/org/fao/geonet/kernel/DataManager.java =================================================================== --- sandbox/BlueNetMEST/src/org/fao/geonet/kernel/DataManager.java 2010-03-12 15:46:36 UTC (rev 5834) +++ sandbox/BlueNetMEST/src/org/fao/geonet/kernel/DataManager.java 2010-03-14 00:00:42 UTC (rev 5835) @@ -130,8 +130,8 @@ Log.debug(Geonet.DATA_MANAGER, "DB CONTENT:\n'"+ Xml.getString(result) +"'"); //DEBUG - // get all metadata from index - Hashtable docs = searchMan.getDocs(); + // get lastchangedate of all metadata in index + Hashtable docs = searchMan.getDocsChangeDate(); Log.debug(Geonet.DATA_MANAGER, "INDEX CONTENT:"); //DEBUG @@ -146,19 +146,17 @@ Log.debug(Geonet.DATA_MANAGER, "- record ("+ id +")"); //DEBUG - Hashtable idxRec = (Hashtable)docs.get(id); + String idxLastChange = (String)docs.get(id); // if metadata is not indexed index it - if (idxRec == null) + if (idxLastChange == null) { indexMetadataGroup(dbms, id); // else, if indexed version is not the latest index it - else - { + } else { docs.remove(id); String lastChange = record.getChildText("changedate"); - String idxLastChange = (String)idxRec.get("_changeDate"); Log.debug(Geonet.DATA_MANAGER, "- lastChange: " + lastChange); Log.debug(Geonet.DATA_MANAGER, "- idxLastChange: " + idxLastChange); Modified: sandbox/BlueNetMEST/src/org/fao/geonet/kernel/search/SearchManager.java =================================================================== --- sandbox/BlueNetMEST/src/org/fao/geonet/kernel/search/SearchManager.java 2010-03-12 15:46:36 UTC (rev 5834) +++ sandbox/BlueNetMEST/src/org/fao/geonet/kernel/search/SearchManager.java 2010-03-14 00:00:42 UTC (rev 5835) @@ -367,6 +367,7 @@ //-------------------------------------------------------------------------------- + // Dangerous if the index is very large! public Hashtable getDocs() throws Exception { _indexReader = getIndexReader(); @@ -389,6 +390,23 @@ //-------------------------------------------------------------------------------- + public Hashtable getDocsChangeDate() throws Exception + { + _indexReader = getIndexReader(); + + Hashtable docs = new Hashtable(); + for (int i = 0; i < _indexReader.numDocs(); i++) { + if (_indexReader.isDeleted(i)) continue; // FIXME: strange lucene hack: sometimes it tries to load a deleted document + Hashtable record = new Hashtable(); + Document doc = _indexReader.document(i); + String id = doc.get("_id"); + docs.put(id, doc.get("_changeDate")); + } + return docs; + } + + //-------------------------------------------------------------------------------- + public Vector getTerms(String fld) throws Exception { Vector terms = new Vector(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |