diff --git a/erpnext/controllers/queries.py b/erpnext/controllers/queries.py
index fc1ce83..6b66489 100644
--- a/erpnext/controllers/queries.py
+++ b/erpnext/controllers/queries.py
@@ -40,6 +40,7 @@
 		order by
 			if(locate(%(_txt)s, name), locate(%(_txt)s, name), 99999),
 			if(locate(%(_txt)s, employee_name), locate(%(_txt)s, employee_name), 99999),
+			idx desc,
 			name, employee_name
 		limit %(start)s, %(page_len)s""".format(**{
 			'key': searchfield,
@@ -64,6 +65,7 @@
 			if(locate(%(_txt)s, name), locate(%(_txt)s, name), 99999),
 			if(locate(%(_txt)s, lead_name), locate(%(_txt)s, lead_name), 99999),
 			if(locate(%(_txt)s, company_name), locate(%(_txt)s, company_name), 99999),
+			idx desc,
 			name, lead_name
 		limit %(start)s, %(page_len)s""".format(**{
 			'key': searchfield,
@@ -94,6 +96,7 @@
 		order by
 			if(locate(%(_txt)s, name), locate(%(_txt)s, name), 99999),
 			if(locate(%(_txt)s, customer_name), locate(%(_txt)s, customer_name), 99999),
+			idx desc,
 			name, customer_name
 		limit %(start)s, %(page_len)s""".format(**{
 			"fields": fields,
@@ -123,6 +126,7 @@
 		order by
 			if(locate(%(_txt)s, name), locate(%(_txt)s, name), 99999),
 			if(locate(%(_txt)s, supplier_name), locate(%(_txt)s, supplier_name), 99999),
+			idx desc,
 			name, supplier_name
 		limit %(start)s, %(page_len)s """.format(**{
 			'field': fields,
@@ -142,6 +146,7 @@
 			and is_group = 0
 			and company = %s
 			and `%s` LIKE %s
+		order by idx desc, name
 		limit %s, %s""" %
 		(", ".join(['%s']*len(filters.get("account_type"))), "%s", searchfield, "%s", "%s", "%s"),
 		tuple(filters.get("account_type") + [filters.get("company"), "%%%s%%" % txt,
@@ -176,6 +181,7 @@
 		order by
 			if(locate(%(_txt)s, name), locate(%(_txt)s, name), 99999),
 			if(locate(%(_txt)s, item_name), locate(%(_txt)s, item_name), 99999),
+			idx desc,
 			name, item_name
 		limit %(start)s, %(page_len)s """.format(key=searchfield,
 			fcond=get_filters_cond(doctype, filters, conditions),
@@ -197,9 +203,16 @@
 			and tabBOM.is_active=1
 			and tabBOM.%(key)s like "%(txt)s"
 			%(fcond)s  %(mcond)s
-		limit %(start)s, %(page_len)s """ %  {'key': searchfield, 'txt': "%%%s%%" % frappe.db.escape(txt),
-		'fcond': get_filters_cond(doctype, filters, conditions),
-		'mcond':get_match_cond(doctype), 'start': start, 'page_len': page_len})
+		order_by
+			if(locate(%(_txt)s, name), locate(%(_txt)s, name), 99999),
+			idx desc, name
+		limit %(start)s, %(page_len)s """ %  {
+			'key': searchfield,
+			'txt': "%%%s%%" % frappe.db.escape(txt),
+			'_txt': txt.replace("%", ""),
+			'fcond': get_filters_cond(doctype, filters, conditions),
+			'mcond':get_match_cond(doctype), 'start': start, 'page_len': page_len
+		})
 
 def get_project_name(doctype, txt, searchfield, start, page_len, filters):
 	cond = ''
@@ -208,10 +221,19 @@
 
 	return frappe.db.sql("""select `tabProject`.name from `tabProject`
 		where `tabProject`.status not in ("Completed", "Cancelled")
-			and {cond} `tabProject`.name like %s {match_cond}
-		order by `tabProject`.name asc
-		limit {start}, {page_len}""".format(cond=cond, match_cond=get_match_cond(doctype),
-			start=start, page_len=page_len), "%{0}%".format(txt))
+			and {cond} `tabProject`.name like %(txt)s {match_cond}
+		order by
+			if(locate(%(_txt)s, name), locate(%(_txt)s, name), 99999),
+			idx desc,
+			`tabProject`.name asc
+		limit {start}, {page_len}""".format(
+			cond=cond,
+			match_cond=get_match_cond(doctype),
+			start=start,
+			page_len=page_len), {
+				"txt": "%{0}%".format(txt),
+				"_txt": txt.relace('%', '')
+			})
 
 def get_delivery_notes_to_be_billed(doctype, txt, searchfield, start, page_len, filters):
 	return frappe.db.sql("""select `tabDelivery Note`.name, `tabDelivery Note`.customer_name
@@ -310,7 +332,8 @@
 					or tabAccount.account_type in ("Income Account", "Temporary"))
 				and tabAccount.is_group=0
 				and tabAccount.`{key}` LIKE %(txt)s
-				{condition} {match_condition}"""
+				{condition} {match_condition}
+			order by idx desc, name"""
 			.format(condition=condition, match_condition=get_match_cond(doctype), key=searchfield), {
 				'txt': "%%%s%%" % frappe.db.escape(txt),
 				'company': filters.get("company", "")
diff --git a/erpnext/templates/pages/product_search.py b/erpnext/templates/pages/product_search.py
index 95e3a55..bdfac4f 100644
--- a/erpnext/templates/pages/product_search.py
+++ b/erpnext/templates/pages/product_search.py
@@ -31,7 +31,7 @@
 		search = "%" + cstr(search) + "%"
 
 	# order by
-	query += """ order by weightage desc, modified desc limit %s, %s""" % (start, limit)
+	query += """ order by weightage desc, idx desc, modified desc limit %s, %s""" % (start, limit)
 
 	data = frappe.db.sql(query, {
 		"search": search,
