def populateDict(self, ar, model): d = { 'name' : model.name, 'description' : model.description[0:300] + "...", 'image_source' : compress(model.image_source[0], 200, 137) if (model.image_source) else "/assets/images/no_image.png", 'button' : model.key().name() } ar.append(d)
def commonInfo(self, dictionary, someEntity): dictionary["name"] = someEntity.name dictionary["alternate_names"] = someEntity.alternate_names dictionary["category"] = someEntity.category dictionary["description"] = someEntity.description dictionary["country"] = someEntity.country dictionary["state"] = someEntity.state dictionary["city"] = someEntity.city dictionary["latitude"] = someEntity.latitude dictionary["longitude"] = someEntity.longitude dictionary["image_source"] = map(lambda x: {"src": x[0], "desc":x[1], "thumb":compress(x[0], 150, 150)}, zip(someEntity.image_source, someEntity.image_description)) dictionary["map_source"] = map(lambda x: str(x), someEntity.map_source) dictionary["citation_source"] = map(lambda x:{"src": x[0], "desc":x[1]}, zip(someEntity.citation_source, someEntity.citation_description)) # assert len(someEntity.external_source) == 0 dictionary["external_source"] = map(lambda x:{"src": x[0], "desc":x[1]}, zip(someEntity.external_link_source, someEntity.external_link_description))
def get(self): # text to search text = self.request.get("search") index = search.Index(name=_INDEX_NAME) # Set sort options sort = search.SortOptions(match_scorer=search.MatchScorer()) # Set query options options = search.QueryOptions( sort_options=sort, returned_fields=['content_of_article', 'article_url', 'image_url'], snippeted_fields=['content_of_article']) # define query boolean options q_list = self.generate_query(text) result = [] doc_id_list =[] for q in q_list: query_obj = search.Query(query_string=q, options=options) results = index.search(query_obj) for doc in results: # check if the doc is already in display results if (str(doc.doc_id) in doc_id_list) == False: result.append({ "snippet":str(doc.expressions[0].value), "url": str(doc.fields[1].value), "image": compress(doc.fields[2].value, 70, 70) }) doc_id_list.append(str(doc.doc_id)) self.response.headers['Content-Type'] = 'application/json' self.response.write(json.dumps(result))