From 82733a81c86f5dbe2ca84aefd0bb73f7c6b81229 Mon Sep 17 00:00:00 2001 From: Alex Jurkiewicz Date: Wed, 8 Jan 2014 17:42:47 +1100 Subject: [PATCH 1/2] limit searchItems returned list size to 100 --- eos/db/gamedata/queries.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eos/db/gamedata/queries.py b/eos/db/gamedata/queries.py index a4ffd42b6..4ddde352d 100755 --- a/eos/db/gamedata/queries.py +++ b/eos/db/gamedata/queries.py @@ -194,7 +194,7 @@ def searchItems(nameLike, where=None, join=None, eager=None): 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).filter(filter).limit(100).all() return items @cachedQuery(2, "where", "itemids") From 7986177a161af1e3c90f6c8c4e6aa4a18ee38269 Mon Sep 17 00:00:00 2001 From: Alex Jurkiewicz Date: Wed, 8 Jan 2014 17:53:33 +1100 Subject: [PATCH 2/2] Change market search from substring to tokenised substring --- eos/db/gamedata/queries.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/eos/db/gamedata/queries.py b/eos/db/gamedata/queries.py index 4ddde352d..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).limit(100).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")