def test_search_with_no_content(logger, mongodb, elastic): """Test search an empty system doesn't raise exceptions. """ assert document.all() == [] results = document.search() assert results['hits']['found'] == 0
def doc_search(request): """Handles quering of the stored documents. """ log = get_log("doc_search") request_id = os.urandom(40).encode('hex') # TODO: actual query and and refine. # # return everything for the moment and emulate an Amazon search query # result set. # log.debug("request_id <{0}> request params <{1}>".format( request_id, request.params )) # Convert request.params from: # # NestedMultiDict([ # (u'size', u'12'), (u'start', u'0'), # (u'facet', u'price,retailer,designer,category,size,colour'), # (u'facet-category-top-n', u'10000'), # (u'q', u'skate board') # ]) # # To a handy dict: # # params = { # u'facet': u'price,retailer,designer,category,size,colour', # u'start': u'0', u'q': u'skate board', # u'facet-category-top-n': u'10000', u'size': u'12' # } # # Ref: # * http://docs.webob.org/en/latest/modules/webob.html # params = request.params.mixed() log.debug("params recovered <{0}>".format(params)) rc = document.search(params) log.debug("returning <{0}> results found:\n{1}.".format( rc['hits']['found'], rc, )) return rc
def doc_search(request): """Handles quering of the stored documents. """ log = get_log("doc_search") request_id = binascii.hexlify(os.urandom(40)).decode() # TODO: actual query and and refine. # # return everything for the moment and emulate an Amazon search query # result set. # log.debug("request_id <{0}> request params <{1}>".format( request_id, request.params )) # Convert request.params from: # # NestedMultiDict([ # (u'size', u'12'), (u'start', u'0'), # (u'facet', u'price,retailer,designer,category,size,colour'), # (u'facet-category-top-n', u'10000'), # (u'q', u'skate board') # ]) # # To a handy dict: # # params = { # u'facet': u'price,retailer,designer,category,size,colour', # u'start': u'0', u'q': u'skate board', # u'facet-category-top-n': u'10000', u'size': u'12' # } # # Ref: # * http://docs.webob.org/en/latest/modules/webob.html # params = request.params.mixed() log.debug("params recovered <{0}>".format(params)) rc = document.search(params) log.debug("returning <{0}> results found:\n{1}.".format( rc['hits']['found'], rc, )) return rc
def test_basic_search(logger, mongodb, elastic): """Test searching the documents stored in mongodb. """ assert document.all() == [] doc = { "designer": "GearPro", "price": 12.60, "retailer": "MyShoppe", "brand_id": [7017], "size": [], "category": "", "name": "Pro Quad Clamp Purple", "colour": [], "brand": "98", "created_at": 1376391294 } doc2 = { "designer": "GearPro", "price": 12.60, "retailer": "MyShoppe", "brand_id": [7016], "size": [], "category": "", "name": "Bike Pump Purple", "colour": [], "brand": "98", "created_at": 1376391294 } example_sdf = [{ "lang": "en", "fields": doc, "version": 1376497963, "type": "add", "id": 1246 }, { "lang": "en", "fields": doc2, "version": 1376497963, "type": "add", "id": 1247 }] rc = document.load(example_sdf) assert rc['status'] == 'ok' assert rc['adds'] == 2 # return all: results = document.search() assert results['hits']['found'] == 2 c = [{'id': '1247'}, {'id': '1246'}] c.sort() results['hits']['hit'].sort() assert results['hits']['hit'] == c # return a specific one: query = dict(q="pro") results = document.search(query) assert results['hits']['found'] == 1 assert results['hits']['hit'] == [{'id': '1246'}] query = dict(q="myshop") results = document.search(query) assert results['hits']['found'] == 2 c.sort() results['hits']['hit'].sort() assert results['hits']['hit'] == c query = dict(q="not in any string") results = document.search(query) assert results['hits']['found'] == 0
def test_basic_search(logger, mongodb, elastic): """Test searching the documents stored in mongodb. """ assert document.all() == [] doc = { "designer": "GearPro", "price": 12.60, "retailer": "MyShoppe", "brand_id": [ 7017 ], "size": [], "category": "", "name": "Pro Quad Clamp Purple", "colour": [], "brand": "98", "created_at": 1376391294 } doc2 = { "designer": "GearPro", "price": 12.60, "retailer": "MyShoppe", "brand_id": [ 7016 ], "size": [], "category": "", "name": "Bike Pump Purple", "colour": [], "brand": "98", "created_at": 1376391294 } example_sdf = [ { "lang": "en", "fields": doc, "version": 1376497963, "type": "add", "id": 1246 }, { "lang": "en", "fields": doc2, "version": 1376497963, "type": "add", "id": 1247 } ] rc = document.load(example_sdf) assert rc['status'] == 'ok' assert rc['adds'] == 2 # return all: results = document.search() assert results['hits']['found'] == 2 expected = [ {'id': '1246', 'fields': doc}, {'id': '1247', 'fields': doc2}, ] assert results['hits']['hit'] == expected # return a specific one: query = dict(q="pro") results = document.search(query) assert results['hits']['found'] == 1 assert results['hits']['hit'] == [{'id': '1246', 'fields': doc}] # this should return two results for the text MyShoppe: query = dict(q="myshop") results = document.search(query) assert results['hits']['found'] == 2 assert results['hits']['hit'] == expected query = dict(q="not in any string") results = document.search(query) assert results['hits']['found'] == 0 # return in sdk format query = dict(q="pro", format="sdk") results = document.search(query) for key, value in doc.items(): if not isinstance(value, list): doc[key] = [value] assert results['hits']['found'] == 1 assert results['hits']['hit'] == [{'id': '1246', 'fields': doc}]
def test_remove_then_search(logger, mongodb): """Test search after a removal of a document. """ assert document.all() == [] doc = { "designer": "98", "price": 1195, "retailer": "", "brand_id": [7017], "size": [], "category": "", "name": "Pro Quad Clamp Purple", "colour": [], "brand": "98", "created_at": 1376391294 } example_add_sdf = [{ "lang": "en", "fields": doc, "version": 1376497963, "type": "add", "id": 1246 }] rc = document.load(example_add_sdf) assert rc['status'] == 'ok' assert rc['adds'] == 1 assert rc['deletes'] == 0 assert rc['error'] == '' assert rc['warning'] == '' report = document.report() assert len(report['documents_removed']) == 0 assert len(report['documents']) == 1 doc = report['documents'][0] assert doc["fields"]["name"] == "Pro Quad Clamp Purple" # Now remove the document from the store: # example_remove_sdf = [{"type": "delete", "id": "1246", "version": 2}] rc = document.load(example_remove_sdf) assert rc['status'] == 'ok' assert rc['adds'] == 0 assert rc['deletes'] == 1 assert rc['error'] == '' assert rc['warning'] == '' found = document.all() assert len(found) == 0 report = document.report() assert len(report['documents_removed']) == 1 assert len(report['documents']) == 0 doc = report['documents_removed'][0] assert doc["fields"]["name"] == "Pro Quad Clamp Purple" # Now search for the document: # found = document.search({'q': 'Pro Quad Clamp Purple'}) hits = found['hits'] assert hits['found'] == 0