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 c0d52f0..6419cd5 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
@@ -24,7 +24,6 @@
 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;
 import org.eclipse.epf.web.search.utils.XSLTProcessor;
@@ -326,12 +325,14 @@
 				}
 
 				if (umaType != null) {
-					String[] keyWords = { "Product", "Descriptor", "Process", "Pattern",
-							"Type", "Definition", "Asset", "Considerations", "Category", 
-							"Material", "Grouping", "Set", "Tool" };
-
-					String strUmaType = StrUtil.convertFirstLetterCase(umaType
-							.stringValue(), keyWords);
+//					String[] keyWords = { "Product", "Descriptor", "Process", "Pattern",
+//							"Type", "Definition", "Asset", "Considerations", "Category", 
+//							"Material", "Grouping", "Set", "Tool" };
+//
+//					String strUmaType = StrUtil.convertFirstLetterCase(umaType
+//							.stringValue(), keyWords);
+					
+					String strUmaType = getImageNameFromUmaTypeStr(umaType.stringValue());
 					
 					if (strUmaType.equalsIgnoreCase("General_content")) {
 						searchResultXML.append(" icon=\"") //$NON-NLS-1$
@@ -414,5 +415,24 @@
 	  return (new String(ostr));
 
 	}
+	
+	private String getImageNameFromUmaTypeStr(String umaTypeStr) {
+		String[] imageNamesForSearchResult =
+		                      {"Activity", "Artifact", "CapabilityPattern", "Checklist", "Concept", "CustomCategory",
+				               "Deliverable", "DeliveryProcess", "Discipline", "DisciplineGrouping", "Domain", "EstimationConsiderations",
+				               "Example", "Guideline", "Iteration", "Milestone", "Outcome", "Phase",
+				               "Practice", "Report", "ReusableAsset", "Roadmap", "Role", "RoleDescriptor",
+				               "RoleSet", "RoleSetGrouping", "Summary", "SupportingMaterial", "Task", "TaskDescriptor",
+				               "Template", "TermDefinition", "Tool", "Toolmentor", "Whitepaper", "WorkProductDescriptor",
+				               "WorkProductType"};
+		
+		for (int i = 0; i < imageNamesForSearchResult.length; i++) {
+			if (umaTypeStr.equalsIgnoreCase(imageNamesForSearchResult[i])) {
+				return imageNamesForSearchResult[i];
+			}			
+		}
+		
+		return umaTypeStr;		
+	}
 
-}
\ No newline at end of file
+}
