knguyen     2005/12/23 16:42:34 CET

  Modified files:
    core/src/java/org/jahia/hibernate/dao JahiaIndexingJobDAO.java 
    core/src/java/org/jahia/services/search 
                                            JahiaSearchBaseService.java 
                                            PageSearcher.java 
    core/src/java/org/jahia/services/search/lucene 
                                                   
AbstractLuceneSearchHandler.java 
    core/src/webapp/WEB-INF/etc/spring 
                                       applicationcontext-basejahiaconfig.xml 
  Log:
  - optimization
  
  Revision  Changes    Path
  1.11      +0 -1      
jahia/core/src/java/org/jahia/hibernate/dao/JahiaIndexingJobDAO.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/hibernate/dao/JahiaIndexingJobDAO.java.diff?r1=1.10&r2=1.11&f=h
  1.43      +60 -4     
jahia/core/src/java/org/jahia/services/search/JahiaSearchBaseService.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/services/search/JahiaSearchBaseService.java.diff?r1=1.42&r2=1.43&f=h
  1.6       +1 -1      
jahia/core/src/java/org/jahia/services/search/PageSearcher.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/services/search/PageSearcher.java.diff?r1=1.5&r2=1.6&f=h
  1.7       +1 -1      
jahia/core/src/java/org/jahia/services/search/lucene/AbstractLuceneSearchHandler.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/services/search/lucene/AbstractLuceneSearchHandler.java.diff?r1=1.6&r2=1.7&f=h
  1.12      +1 -0      
jahia/core/src/webapp/WEB-INF/etc/spring/applicationcontext-basejahiaconfig.xml
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/webapp/WEB-INF/etc/spring/applicationcontext-basejahiaconfig.xml.diff?r1=1.11&r2=1.12&f=h
  
  
  
  Index: JahiaIndexingJobDAO.java
  ===================================================================
  RCS file: 
/home/cvs/repository/jahia/core/src/java/org/jahia/hibernate/dao/JahiaIndexingJobDAO.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- JahiaIndexingJobDAO.java  22 Dec 2005 16:22:17 -0000      1.10
  +++ JahiaIndexingJobDAO.java  23 Dec 2005 15:42:33 -0000      1.11
  @@ -67,7 +67,6 @@
   
       public void delete(String id) {
           HibernateTemplate template = getHibernateTemplate();
  -        Session session = this.getSession();
           template.deleteAll(template.find("from JahiaIndexingJob h where 
h.id=?", id));
       }
   
  
  
  
  Index: JahiaSearchBaseService.java
  ===================================================================
  RCS file: 
/home/cvs/repository/jahia/core/src/java/org/jahia/services/search/JahiaSearchBaseService.java,v
  retrieving revision 1.42
  retrieving revision 1.43
  diff -u -r1.42 -r1.43
  --- JahiaSearchBaseService.java       22 Dec 2005 13:47:01 -0000      1.42
  +++ JahiaSearchBaseService.java       23 Dec 2005 15:42:33 -0000      1.43
  @@ -125,10 +125,12 @@
   
       private Thread backgroundIndexingThread;
   
  -    long indexingThreadSleepTime = 2000;
  -
       private String serverId;
   
  +    private HashMap indexingJobInserts = new HashMap();
  +
  +    private long indexingJobInsertMinInterval = 0;
  +
       
//-------------------------------------------------------------------------
       //
       // Constructors, global start, stop, inits services methods
  @@ -189,7 +191,6 @@
               f.mkdir();
           }
   
  -
           val = 
config.getProperty(JahiaSearchConfigConstant.SEARCH_LOCAL_INDEXING);
           localIndexing = !((val != null && "0".equals(val.trim())));
           logger.debug("This node will not perfom search indexation, just 
search.");
  @@ -203,6 +204,13 @@
               throw new JahiaInitializationException("Exception creating 
Search Manager", e);
           }
   
  +        val = 
config.getProperty(JahiaSearchConfigConstant.SEARCH_INDEXING_JOB_EXECUTION_DELAY_TIME);
  +        try {
  +            this.indexingJobInsertMinInterval = Long.parseLong(val)/2;
  +        } catch (Exception e) {
  +            this.indexingJobInsertMinInterval = 300;
  +        }
  +
           try {
               startIndexingJobConsummer();
           } catch (Exception e) {
  @@ -543,7 +551,7 @@
       
//-------------------------------------------------------------------------
   
       /**
  -     * Save an JahiaIndexingJob i queue
  +     * Save an JahiaIndexingJob in queue
        *
        * @param job
        */
  @@ -551,6 +559,54 @@
           if (job == null) {
               return;
           }
  +        synchronized(indexingJobInserts){
  +            Long lastInsertTime = null;
  +            StringBuffer key =new StringBuffer(100);
  +            String keyAsString = null;
  +            long diff = 0;
  +            if ( job instanceof JahiaFieldIndexingJob ){
  +                key.append(job.getClassName())
  +                    .append(((JahiaFieldIndexingJob)job).getFieldId());
  +                keyAsString = key.toString();
  +                lastInsertTime = (Long) indexingJobInserts.get(keyAsString);
  +            } else if ( job instanceof JahiaContainerIndexingJob ) {
  +                key.append(job.getClassName())
  +                    .append(((JahiaContainerIndexingJob)job).getCtnId());
  +                keyAsString = key.toString();
  +                lastInsertTime = (Long) indexingJobInserts.get(keyAsString);
  +            } else if ( job instanceof JahiaContainerListIndexingJob ) {
  +                key.append(job.getClassName())
  +                    
.append(((JahiaContainerListIndexingJob)job).getCtnListId());
  +                keyAsString = key.toString();
  +                lastInsertTime = (Long) indexingJobInserts.get(keyAsString);
  +            } else if ( job instanceof JahiaPageIndexingJob ) {
  +                key.append(job.getClassName())
  +                    .append(((JahiaPageIndexingJob)job).getPageId());
  +                keyAsString = key.toString();
  +                lastInsertTime = (Long) indexingJobInserts.get(keyAsString);
  +            } else if ( job instanceof JahiaRemoveFromIndexJob ){
  +                key.append(key.append(job.getClassName())
  +                    .append(((JahiaRemoveFromIndexJob)job).getKeyFieldName())
  +                    
.append(((JahiaRemoveFromIndexJob)job).getKeyFieldValue())
  +                    .append(job.getSiteId()));
  +                keyAsString = key.toString();
  +                lastInsertTime = (Long) indexingJobInserts.get(keyAsString);
  +            } else {
  +                indexingJobInserts = new HashMap();
  +            }
  +            if ( lastInsertTime != null ){
  +                diff = job.getDate().longValue()-lastInsertTime.longValue();
  +                if (diff < this.indexingJobInsertMinInterval) {
  +                    // skip inserting the job
  +                    //logger.info("Skip inserting indexingJob ");
  +                    return;
  +                } else {
  +                    indexingJobInserts.put(keyAsString,job.getDate());
  +                }
  +            } else if ( keyAsString != null ){
  +                indexingJobInserts.put(keyAsString,job.getDate());
  +            }
  +        }
           indJobMgr.save(job);
       }
   
  
  
  
  Index: PageSearcher.java
  ===================================================================
  RCS file: 
/home/cvs/repository/jahia/core/src/java/org/jahia/services/search/PageSearcher.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- PageSearcher.java 30 Sep 2005 15:34:03 -0000      1.5
  +++ PageSearcher.java 23 Dec 2005 15:42:33 -0000      1.6
  @@ -112,7 +112,7 @@
           JahiaSite site = null;
           String queryStr = null;
           for ( int i=0; i<searchHandlers.length; i++ ){
  -            searchHandlerName = (String)searchHandlers[i];
  +            searchHandlerName = searchHandlers[i];
               site = null;
               try {
                   site = 
ServicesRegistry.getInstance().getJahiaSitesService().getSiteByKey(searchHandlerName);
  
  
  
  Index: AbstractLuceneSearchHandler.java
  ===================================================================
  RCS file: 
/home/cvs/repository/jahia/core/src/java/org/jahia/services/search/lucene/AbstractLuceneSearchHandler.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- AbstractLuceneSearchHandler.java  19 Dec 2005 15:44:10 -0000      1.6
  +++ AbstractLuceneSearchHandler.java  23 Dec 2005 15:42:34 -0000      1.7
  @@ -106,7 +106,7 @@
               reader = this.getIndexReader();
               IndexSearcher searcher = new IndexSearcher(reader);
               Query q = QueryParser.parse(query,
  -                    
getAllSearchFieldName(),//IndexableDocument.CONTENT_FULLTEXT_SEARCH_FIELD,
  +                    getAllSearchFieldName(),
                       this.analyzer);
               Hits hits = null;
               if ( filter != null ){
  
  
  
  Index: applicationcontext-basejahiaconfig.xml
  ===================================================================
  RCS file: 
/home/cvs/repository/jahia/core/src/webapp/WEB-INF/etc/spring/applicationcontext-basejahiaconfig.xml,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- applicationcontext-basejahiaconfig.xml    23 Dec 2005 11:26:59 -0000      
1.11
  +++ applicationcontext-basejahiaconfig.xml    23 Dec 2005 15:42:34 -0000      
1.12
  @@ -115,6 +115,7 @@
           <prop key="indexingJobExecutionDelayTime">30000</prop><!-- the 
delayed time before processing an indexing job ( an indexing job will be 
                                                                                
                                                                                
                                                                                
        processed only after this delay time in regard to it creation time -->
           <prop key="indexingJobMaxLifeTime">900000</prop><!-- the maximum 
life time of indexing job history. 15min for demo purpose, but should be i.e 1 
day with several indexing servers in cluster  -->
  +        <prop key="indexingJobMaxLifeTime">900000</prop><!-- the maximum 
life time of indexing job history. 15min for demo purpose, but should be i.e 1 
day with several indexing servers in cluster  -->
                                
                                <prop 
key="defaultSearchHandlerClass">org.jahia.services.search.lucene.fs.LuceneSearchHandlerImpl</prop>
                                <!--
  

Reply via email to