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>
<!--