diff --git a/org.eclipse.epf.web.search/epf-web-search.jardesc b/org.eclipse.epf.web.search/epf-web-search.jardesc
index f8f2994..c50302a 100644
--- a/org.eclipse.epf.web.search/epf-web-search.jardesc
+++ b/org.eclipse.epf.web.search/epf-web-search.jardesc
@@ -1,16 +1,15 @@
-<?xml version="1.0" encoding="WINDOWS-1252"?>
-<jardesc>
-<jar path="C:/ec/epf1/org.eclipse.epf.publishing/docroot/WEB-INF/lib/epf-web-search.jar"/>
-<options buildIfNeeded="true" compress="true" descriptionLocation="/org.eclipse.epf.web.search/epf-web-search.jardesc" exportErrors="true" exportWarnings="true" includeDirectoryEntries="false" overwrite="false" saveDescription="true" storeRefactorings="false" useSourceFolders="false"/>
-<storedRefactorings deprecationInfo="true" structuralOnly="false"/>
-<selectedProjects/>
-<manifest generateManifest="true" manifestLocation="" manifestVersion="1.0" reuseManifest="false" saveManifest="false" usesManifest="true">
-<sealing sealJar="false">
-<packagesToSeal/>
-<packagesToUnSeal/>
-</sealing>
-</manifest>
-<selectedElements exportClassFiles="true" exportJavaFiles="false" exportOutputFolder="false">
-<javaElement handleIdentifier="=org.eclipse.epf.web.search/src"/>
-</selectedElements>
-</jardesc>
+<?xml version="1.0" encoding="WINDOWS-1252"?><jardesc>
+    <jar path="C:/download/jar/epf-web-search.jar"/>
+    <options buildIfNeeded="true" compress="true" descriptionLocation="/org.eclipse.epf.web.search/epf-web-search.jardesc" exportErrors="true" exportWarnings="true" includeDirectoryEntries="false" overwrite="false" saveDescription="true" storeRefactorings="false" useSourceFolders="false"/>
+    <storedRefactorings deprecationInfo="true" structuralOnly="false"/>
+    <selectedProjects/>
+    <manifest generateManifest="true" manifestLocation="" manifestVersion="1.0" reuseManifest="false" saveManifest="false" usesManifest="true">
+        <sealing sealJar="false">
+            <packagesToSeal/>
+            <packagesToUnSeal/>
+        </sealing>
+    </manifest>
+    <selectedElements exportClassFiles="true" exportJavaFiles="false" exportOutputFolder="false">
+        <javaElement handleIdentifier="=org.eclipse.epf.web.search/src"/>
+    </selectedElements>
+</jardesc>
\ No newline at end of file
diff --git a/org.eclipse.epf.web.search/src/org/eclipse/epf/web/search/IndexLoader.java b/org.eclipse.epf.web.search/src/org/eclipse/epf/web/search/IndexLoader.java
index 05af15b..4c6f26a 100644
--- a/org.eclipse.epf.web.search/src/org/eclipse/epf/web/search/IndexLoader.java
+++ b/org.eclipse.epf.web.search/src/org/eclipse/epf/web/search/IndexLoader.java
@@ -14,12 +14,22 @@
 import java.io.FileWriter;
 import java.io.InputStreamReader;
 import java.net.URL;
+import java.security.cert.CertificateException;
+import java.security.cert.X509Certificate;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.StringTokenizer;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipInputStream;
 
+import javax.net.ssl.HostnameVerifier;
+import javax.net.ssl.HttpsURLConnection;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLSession;
+import javax.net.ssl.SSLSocketFactory;
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.X509TrustManager;
+
 import org.eclipse.epf.web.search.utils.UNCUtil;
 
 
@@ -292,12 +302,23 @@
 			URL url = new URL(documentBase + "/search/index/version.txt"); //$NON-NLS-1$
 			// handle UNC
 			url = UNCUtil.handleURLForUNC(url);
-
-			BufferedInputStream inputS = new BufferedInputStream(url
-					.openStream());
-			InputStreamReader iStreamReader = new InputStreamReader(inputS);
-			BufferedReader read = new BufferedReader(iStreamReader);
-			String version = read.readLine();
+			
+	        BufferedReader in = null;	        
+	        if (documentBase.startsWith("http:")) { //$NON-NLS-1$
+	        	in = new BufferedReader(new InputStreamReader(url.openStream()));
+	        } else if (documentBase.startsWith("https:")) { //$NON-NLS-1$
+	        	TrustManager[] tm = {new EPFX509TrustManager()};
+	        	SSLContext sslContext = SSLContext.getInstance("SSL"); //$NON-NLS-1$
+	        	sslContext.init(null, tm, null);	        	
+	        	SSLSocketFactory sslFactory = sslContext.getSocketFactory();
+	        	
+	        	HttpsURLConnection.setDefaultSSLSocketFactory(sslFactory);
+	        	HttpsURLConnection.setDefaultHostnameVerifier(new EPFHostnameVerifier());
+	        		        	
+	        	in = new BufferedReader(new InputStreamReader(url.openStream())); 
+	        }
+						
+			String version = in.readLine();
 			int idx = (version != null) ? version.indexOf(VERSION_DELIMITER)
 					: -1;
 			if (idx > -1) {
@@ -307,13 +328,13 @@
 				throw new FileNotFoundException();
 			}
 			
-			String analyzer = read.readLine();
+			String analyzer = in.readLine();
 			if (analyzer != null) {
 				analyzer = analyzer.trim();
 			}
 			setAnalyzerName(analyzer);
 			
-			read.close();
+			in.close();
 		
 			if (siteFolderName == null) {
 				throw new FileNotFoundException();
@@ -347,4 +368,28 @@
 	private synchronized static void setAnalyzerName(String analyzerName) {
 		IndexLoader.analyzerName = analyzerName;
 	}
-}
\ No newline at end of file
+}
+
+class EPFX509TrustManager implements X509TrustManager {
+	private X509Certificate[] serverCertificate;
+	
+	public void checkClientTrusted(X509Certificate[] arg0, String arg1)
+			throws CertificateException {	
+		//
+	}
+
+	public void checkServerTrusted(X509Certificate[] arg0, String arg1)
+			throws CertificateException {		
+		serverCertificate = arg0;
+	}
+
+	public X509Certificate[] getAcceptedIssuers() {
+		return serverCertificate;
+	}	
+}
+
+class EPFHostnameVerifier implements HostnameVerifier {
+	public boolean verify(String arg0, SSLSession arg1) {
+		return true;
+	}	
+}
diff --git a/org.eclipse.epf.web.search/src/org/eclipse/epf/web/search/IndexSearch.java b/org.eclipse.epf.web.search/src/org/eclipse/epf/web/search/IndexSearch.java
index daebf4f..d25f5c9 100644
--- a/org.eclipse.epf.web.search/src/org/eclipse/epf/web/search/IndexSearch.java
+++ b/org.eclipse.epf.web.search/src/org/eclipse/epf/web/search/IndexSearch.java
@@ -14,6 +14,7 @@
 import org.eclipse.epf.web.search.analysis.CJKAnalyzer;
 import org.eclipse.epf.web.search.analysis.ChineseAnalyzer;
 import org.eclipse.epf.web.search.analysis.TextAnalyzer;
+import org.eclipse.epf.web.search.utils.DebugUtil;
 
 import com.ibm.icu.text.DecimalFormat;
 
@@ -75,7 +76,9 @@
 				if (analyzer == null) { 	
 					analyzer = new TextAnalyzer();				
 				}				
-				System.out.println("LD> analyzer: " + analyzer);
+				if (DebugUtil.DEBUG) {
+					System.out.println("LD> analyzer: " + analyzer);
+				}
 				q = QueryParser.parse(queryString, searchField,
 						analyzer);
 				if ( q != null ) {
diff --git a/org.eclipse.epf.web.search/src/org/eclipse/epf/web/search/utils/DebugUtil.java b/org.eclipse.epf.web.search/src/org/eclipse/epf/web/search/utils/DebugUtil.java
new file mode 100644
index 0000000..0053b08
--- /dev/null
+++ b/org.eclipse.epf.web.search/src/org/eclipse/epf/web/search/utils/DebugUtil.java
@@ -0,0 +1,9 @@
+//------------------------------------------------------------------------------
+//Copyright (c) 2004, 2011 IBM Corporation.  All Rights Reserved.
+//------------------------------------------------------------------------------
+
+package org.eclipse.epf.web.search.utils;
+
+public interface DebugUtil {
+	public static final boolean DEBUG = false;
+}
diff --git a/org.eclipse.epf.web/epf-web.jardesc b/org.eclipse.epf.web/epf-web.jardesc
index ea0f7f8..69babf0 100644
--- a/org.eclipse.epf.web/epf-web.jardesc
+++ b/org.eclipse.epf.web/epf-web.jardesc
@@ -1,16 +1,15 @@
-<?xml version="1.0" encoding="WINDOWS-1252"?>
-<jardesc>
-<jar path="C:/ec/epf1/org.eclipse.epf.publishing/docroot/WEB-INF/lib/epf-web.jar"/>
-<options buildIfNeeded="true" compress="true" descriptionLocation="/org.eclipse.epf.web/epf-web.jardesc" exportErrors="false" exportWarnings="true" includeDirectoryEntries="false" overwrite="true" saveDescription="true" storeRefactorings="false" useSourceFolders="false"/>
-<storedRefactorings deprecationInfo="true" structuralOnly="false"/>
-<selectedProjects/>
-<manifest generateManifest="true" manifestLocation="" manifestVersion="1.0" reuseManifest="false" saveManifest="false" usesManifest="true">
-<sealing sealJar="false">
-<packagesToSeal/>
-<packagesToUnSeal/>
-</sealing>
-</manifest>
-<selectedElements exportClassFiles="true" exportJavaFiles="false" exportOutputFolder="false">
-<javaElement handleIdentifier="=org.eclipse.epf.web/src"/>
-</selectedElements>
-</jardesc>
+<?xml version="1.0" encoding="WINDOWS-1252"?><jardesc>
+    <jar path="C:/download/jar/epf-web.jar"/>
+    <options buildIfNeeded="true" compress="true" descriptionLocation="/org.eclipse.epf.web/epf-web.jardesc" exportErrors="false" exportWarnings="true" includeDirectoryEntries="false" overwrite="false" saveDescription="true" storeRefactorings="false" useSourceFolders="false"/>
+    <storedRefactorings deprecationInfo="true" structuralOnly="false"/>
+    <selectedProjects/>
+    <manifest generateManifest="true" manifestLocation="" manifestVersion="1.0" reuseManifest="false" saveManifest="false" usesManifest="true">
+        <sealing sealJar="false">
+            <packagesToSeal/>
+            <packagesToUnSeal/>
+        </sealing>
+    </manifest>
+    <selectedElements exportClassFiles="true" exportJavaFiles="false" exportOutputFolder="false">
+        <javaElement handleIdentifier="=org.eclipse.epf.web/src"/>
+    </selectedElements>
+</jardesc>
\ No newline at end of file
diff --git a/org.eclipse.epf.web/src/org/eclipse/epf/web/servlet/SearchServlet.java b/org.eclipse.epf.web/src/org/eclipse/epf/web/servlet/SearchServlet.java
index 203dbe9..c0d52f0 100644
--- a/org.eclipse.epf.web/src/org/eclipse/epf/web/servlet/SearchServlet.java
+++ b/org.eclipse.epf.web/src/org/eclipse/epf/web/servlet/SearchServlet.java
@@ -23,6 +23,7 @@
 import org.eclipse.epf.web.search.IndexLoader;
 import org.eclipse.epf.web.search.IndexSearch;
 import org.eclipse.epf.web.search.SearchResources;
+import org.eclipse.epf.web.search.utils.DebugUtil;
 import org.eclipse.epf.web.search.utils.StrUtil;
 import org.eclipse.epf.web.search.utils.UNCUtil;
 import org.eclipse.epf.web.search.utils.XMLUtil;
@@ -111,7 +112,11 @@
 				} else {
 					
 					String searchString = request.getParameter("searchString");
-					System.out.println("LD> searchString: " + searchString);
+					if (DebugUtil.DEBUG) {
+						System.out.println("LD> searchString: " + searchString);
+						System.out.println("LD> documentBasePath: " + _pathDocumentBase);
+						System.out.println("LD> siteFolderName: " + _siteFolderName);
+					}
 					
 					if (searchString == null || searchString.length() == 0) {
 						response.sendError(HttpServletResponse.SC_NO_CONTENT);
@@ -188,18 +193,26 @@
 		boolean result = false;
 		//_currentSearchString = "\u57FA\u672C\u539F\u5247";
 		try {
-			System.out.println("LD> _indexPath: " + _indexPath);//$NON-NLS-1$
-			System.out.println("LD> _currentSearchString: " + _currentSearchString);//$NON-NLS-1$
+			if (DebugUtil.DEBUG) {
+				System.out.println("LD> _indexPath: " + _indexPath);//$NON-NLS-1$
+				System.out.println("LD> _currentSearchString: " + _currentSearchString);//$NON-NLS-1$
+			}
 			if (_currentSearchString != null) {
-				System.out.println("LD> unicodes: " + 
-					escapeUnicodeString(_currentSearchString, false));//$NON-NLS-1$
+				if (DebugUtil.DEBUG) {
+					System.out.println("LD> unicodes: " + 
+						escapeUnicodeString(_currentSearchString, false));//$NON-NLS-1$
+				}
 			}
 			
-			System.out.println("LD> analyzerName: " + analyzerName);//$NON-NLS-1$
+			if (DebugUtil.DEBUG) {
+				System.out.println("LD> analyzerName: " + analyzerName);//$NON-NLS-1$
+			}
 			
 			_hits = IndexSearch.search(_indexPath, _currentSearchString, searchField, analyzerName);// new
-			System.out.println("LD> _hits: " + 
-					(_hits == null ? "null" : Integer.toString(_hits.length())));//$NON-NLS-1$ //$NON-NLS-2$
+			if (DebugUtil.DEBUG) {
+				System.out.println("LD> _hits: " + 
+						(_hits == null ? "null" : Integer.toString(_hits.length())));//$NON-NLS-1$ //$NON-NLS-2$
+			}
 			
 			// SortedHits(hits);
 
