diff --git a/database.py b/database.py
index 40674905fdafbcf8a4dc1c694ec5e8c0e17e9d64..d409d6cde4410124173790660642e349c8abf5be 100644
--- a/database.py
+++ b/database.py
@@ -130,19 +130,17 @@ def get_doc(app, conn, source, id):
 
 # Search taxon: /search/taxon
 def search_taxon(app, conn, root, qps, name):
-    query = "SELECT taxonid \
-             FROM taxon \
-             WHERE "
-    if root != None:
-        query += "(path like '%/" + root + "/%' or taxonid='" + root + "') AND "
+    query = "SELECT taxonid FROM taxon WHERE "
     if qps in ("yes", "true"):
         query += "qps = 'yes' AND "
     if name != None:
-        query += "lower(name) ~'" + name + "'"
+        query += "lower(name) ~ '" + name + "' AND "
+    if root != None:
+        query += "(taxonid = '" + root + "' or path like '%/" + root + "/%')"
     query = re.sub('AND $', '', query)
     conn = get_db(app)
     if conn != None:
-        cursor = conn.cursor
+        cursor = conn.cursor()
         try:
             cursor.execute(query)
         except Exception as err: