diff --git a/eos/db/gamedata/queries.py b/eos/db/gamedata/queries.py index a4ffd42b6..93c43fc38 100755 --- a/eos/db/gamedata/queries.py +++ b/eos/db/gamedata/queries.py @@ -184,8 +184,6 @@ def getItemsByCategory(filter, where=None, eager=None): def searchItems(nameLike, where=None, join=None, eager=None): if not isinstance(nameLike, basestring): raise TypeError("Need string as argument") - # Prepare our string for request - nameLike = u"%{0}%".format(sqlizeString(nameLike)) if join is None: join = tuple() @@ -193,8 +191,11 @@ def searchItems(nameLike, where=None, join=None, eager=None): if not hasattr(join, "__iter__"): join = (join,) - filter = processWhere(Item.name.like(nameLike, escape="\\"), where) - items = gamedata_session.query(Item).options(*processEager(eager)).join(*join).filter(filter).all() + items = gamedata_session.query(Item).options(*processEager(eager)).join(*join) + for token in nameLike.split(' '): + token_safe = u"%{0}%".format(sqlizeString(token)) + items = items.filter(processWhere(Item.name.like(token_safe, escape="\\"), where)) + items = items.limit(100).all() return items @cachedQuery(2, "where", "itemids")