def handle_search(self, action, data): self.searcher = component.getUtility(interfaces.IIndexSearch)() search_term = data['full_text'] content_type = data['content_type'] lang = data['language'] indexed_field = data.get('field', '') status = data.get('status', '') status_date = data['status_date'] owner = data.get('owner', '') if not lang: lang = 'en' if not search_term: self.status = _(u"Invalid Query") return # compose query t = time.time() if content_type and indexed_field and indexed_field != 'all': text_query = self.searcher.query_field(indexed_field, search_term) lang_query = self.searcher.query_field('language', lang) self.query = self.searcher.query_composite(self.searcher.OP_AND, \ (text_query, lang_query,)) else: text_query = self.searcher.query_parse(search_term) lang_query = self.searcher.query_field('language', lang) self.query = self.searcher.query_composite(self.searcher.OP_AND, \ (text_query, lang_query,)) if content_type: content_type_query = self.searcher.query_field( 'object_type', content_type) self.query = self.searcher.query_composite(self.searcher.OP_AND, \ (self.query, content_type_query,)) if content_type and status: status_query = self.searcher.query_field('status', status) self.query = self.searcher.query_composite(self.searcher.OP_AND, \ (self.query, status_query,)) if status_date: status_date_query = self.searcher.query_field( 'status_date', index.date_value(status_date)) self.query = self.searcher.query_composite(self.searcher.OP_AND, \ (self.query, status_date_query,)) if owner: owner_query = self.searcher.query_field('owner', str(owner)) self.query = self.searcher.query_composite(self.searcher.OP_AND, \ (self.query, owner_query,)) self.results = self._results self.search_time = time.time() - t # spelling suggestions suggestion = self.searcher.spell_correct(search_term) self.spelling_suggestion = (search_term != suggestion and suggestion or None)
def handle_search(self, action, data): self.searcher = component.getUtility(interfaces.IIndexSearch)() search_term = data[ 'full_text' ] content_type = data['content_type'] lang = data['language'] indexed_field = data.get('field', '') status = data.get('status', '') status_date = data['status_date'] owner = data.get('owner', '') if not lang: lang = 'en' if not search_term: self.status = _(u"Invalid Query") return # compose query t = time.time() if content_type and indexed_field and indexed_field != 'all': text_query = self.searcher.query_field(indexed_field, search_term) lang_query = self.searcher.query_field('language', lang) self.query = self.searcher.query_composite(self.searcher.OP_AND, \ (text_query, lang_query,)) else: text_query = self.searcher.query_parse(search_term) lang_query = self.searcher.query_field('language', lang) self.query = self.searcher.query_composite(self.searcher.OP_AND, \ (text_query, lang_query,)) if content_type: content_type_query = self.searcher.query_field('object_type', content_type) self.query = self.searcher.query_composite(self.searcher.OP_AND, \ (self.query, content_type_query,)) if content_type and status: status_query = self.searcher.query_field('status', status) self.query = self.searcher.query_composite(self.searcher.OP_AND, \ (self.query, status_query,)) if status_date: status_date_query = self.searcher.query_field('status_date', index.date_value(status_date)) self.query = self.searcher.query_composite(self.searcher.OP_AND, \ (self.query, status_date_query,)) if owner: owner_query = self.searcher.query_field('owner', str(owner)) self.query = self.searcher.query_composite(self.searcher.OP_AND, \ (self.query, owner_query,)) self.results = self._results self.search_time = time.time() - t # spelling suggestions suggestion = self.searcher.spell_correct(search_term) self.spelling_suggestion = ( search_term != suggestion and suggestion or None)
def handle_search(self, action, data): self.searcher = component.getUtility(interfaces.IIndexSearch)() search_term = data["full_text"] content_type = data["content_type"] lang = data["language"] indexed_field = data.get("field", "") status = data.get("status", "") status_date = data["status_date"] if not lang: lang = "en" if not search_term: self.status = _(u"Invalid Query") return # compose query t = time.time() if content_type and indexed_field and indexed_field != "all": text_query = self.searcher.query_field(indexed_field, search_term) lang_query = self.searcher.query_field("language", lang) self.query = self.searcher.query_composite(self.searcher.OP_AND, (text_query, lang_query)) else: text_query = self.searcher.query_parse(search_term) lang_query = self.searcher.query_field("language", lang) self.query = self.searcher.query_composite(self.searcher.OP_AND, (text_query, lang_query)) if content_type: content_type_query = self.searcher.query_field("object_type", content_type) self.query = self.searcher.query_composite(self.searcher.OP_AND, (self.query, content_type_query)) if content_type and status: status_query = self.searcher.query_field("status", status) self.query = self.searcher.query_composite(self.searcher.OP_AND, (self.query, status_query)) if status_date: status_date_query = self.searcher.query_field("status_date", index.date_value(status_date)) self.query = self.searcher.query_composite(self.searcher.OP_AND, (self.query, status_date_query)) self.results = self._results self.search_time = time.time() - t # spelling suggestions suggestion = self.searcher.spell_correct(search_term) self.spelling_suggestion = search_term != suggestion and suggestion or None print self.query