wlu: analyzer class name in index.txt 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 693e5f0..05af15b 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
@@ -30,6 +30,7 @@
 
 	private static String userIndexFolderName = null;
 	private String userIndexPath = null;
+	private static String analyzerName;	
 	private static Map cache = new HashMap();
 
 	protected String m_docBase;
@@ -222,6 +223,13 @@
 			} else {
 				throw new FileNotFoundException();
 			}
+			
+			String analyzer = read.readLine();
+			if (analyzer != null) {
+				analyzer = analyzer.trim();
+			}
+			setAnalyzerName(analyzer);
+			
 			read.close();
 		
 			if (userIndexFolderName == null) {
@@ -298,6 +306,13 @@
 			} else {
 				throw new FileNotFoundException();
 			}
+			
+			String analyzer = read.readLine();
+			if (analyzer != null) {
+				analyzer = analyzer.trim();
+			}
+			setAnalyzerName(analyzer);
+			
 			read.close();
 		
 			if (siteFolderName == null) {
@@ -324,4 +339,12 @@
 	public String getUserIndexPath() {
 		return userIndexPath;
 	}
+
+	public synchronized static String getAnalyzerName() {
+		return analyzerName;
+	}
+
+	private synchronized static void setAnalyzerName(String analyzerName) {
+		IndexLoader.analyzerName = analyzerName;
+	}
 }
\ No newline at end of file
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 aa558d5..daebf4f 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
@@ -1,6 +1,5 @@
 package org.eclipse.epf.web.search;
 
-import java.util.Locale;
 import java.util.StringTokenizer;
 
 import org.apache.lucene.analysis.Analyzer;
@@ -21,9 +20,16 @@
 public class IndexSearch {
 
 	private static Searcher searcher;
-
+	
+	/**
+	 * @param indexLocation
+	 * @param inputQuery
+	 * @param searchField
+	 * @param analyzerName: name of analyzer class
+	 * @return
+	 */
 	public static Hits search(String indexLocation, String inputQuery,
-		String searchField) {
+		String searchField, String analyzerName) {
 		
 		Hits hits = null;
 		Query q = null;
@@ -59,18 +65,17 @@
 			// so don't pass in any sorting criteria
 			Sort sort = null;
 			
-			try {
-				
-				boolean jako = false;
-				Locale locale = Locale.getDefault();
-				String lang = locale.getLanguage();
-				if (lang.equals(Locale.JAPANESE.getLanguage()) ||
-					lang.equals(Locale.KOREA.getLanguage())) {
-					jako = true;
+			try {				
+				Analyzer analyzer = null;
+				if (analyzerName != null) {
+					if (analyzerName.equals("CJKAnalyzer")) {//$NON-NLS-1$)
+						analyzer = new CJKAnalyzer();
+					}
 				}
-				Analyzer analyzer = jako ? (Analyzer) new CJKAnalyzer() : (Analyzer) new TextAnalyzer();
-				
-				//System.out.println("LD>analyzer: " + analyzer);
+				if (analyzer == null) { 	
+					analyzer = new TextAnalyzer();				
+				}				
+				System.out.println("LD> analyzer: " + analyzer);
 				q = QueryParser.parse(queryString, searchField,
 						analyzer);
 				if ( q != null ) {
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 54e2172..068e6a0 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
@@ -6,7 +6,7 @@
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.io.StringWriter;
-import java.net.URLEncoder;
+import java.util.Locale;
 import java.util.Properties;
 
 import javax.servlet.ServletConfig;
@@ -43,6 +43,7 @@
 	private Hits _hits;
 	private int _numHits;
 	private int _currentPage;
+	private String analyzerName;
 
 	private HttpServletResponse _response;
 
@@ -79,6 +80,7 @@
 
 		try {
 			_siteFolderName = IndexLoader.getSiteFolderName(_pathDocumentBase);
+			analyzerName = IndexLoader.getAnalyzerName();
 			
 			synchronized(session) {
 				String results;
@@ -105,11 +107,13 @@
 					}
 				} else {
 					String searchString = request.getParameter("searchString");
+					System.out.println("LD> searchString: " + searchString);
+					
 					if (searchString == null || searchString.length() == 0) {
 						response.sendError(HttpServletResponse.SC_NO_CONTENT);
 						return;
 					}
-					searchString = URLEncoder.encode(searchString, "UTF-8");
+					//searchString = URLEncoder.encode(searchString, "UTF-8");
 
 					String resultsPerPage = request.getParameter("hitsPerPage");
 					if (resultsPerPage != null && resultsPerPage.length() > 0) {
@@ -161,8 +165,21 @@
 
 	private boolean runQuery(String searchField) {
 		boolean result = false;
+		//_currentSearchString = "\u57FA\u672C\u539F\u5247";
 		try {
-			_hits = IndexSearch.search(_indexPath, _currentSearchString, searchField);// new
+			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$
+			}
+			
+			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$
+			
 			// SortedHits(hits);
 
 			_numHits = _hits.length();
@@ -335,4 +352,33 @@
 			e.printStackTrace();
 		}
 	}
+	
+	//for debug
+	private static String escapeUnicodeString(String str, boolean escapeAscii) {
+		StringBuffer ostr = new StringBuffer();
+
+		for (int i = 0; i < str.length(); i++) {
+
+			char ch = str.charAt(i);
+
+			if (!escapeAscii && ((ch >= 0x0020) && (ch <= 0x007e))) {
+				ostr.append(ch);
+			} else {
+
+				ostr.append("\\u") ;	//$NON-NLS-1$
+
+				String hex = Integer.toHexString(str.charAt(i) & 0xFFFF);
+				for (int j = 0; j < 4 - hex.length(); j++)
+					ostr.append("0");//$NON-NLS-1$)
+
+				ostr.append(hex.toUpperCase(Locale.ENGLISH));
+
+			}
+
+		}
+
+	  return (new String(ostr));
+
+	}
+
 }
\ No newline at end of file