def build_query(self, query, workspaces=None, templates=None, options=None, title=None): """Build the raw query Prepare the query for a keyword search Args: query: ObjectId workspaces: ObjectId templates: ObjectId options: Query options title: title filter Returns: The raw query """ # build query builder query = json.dumps(get_full_text_query(query)) return super(ExecuteLocalKeywordQueryView, self).build_query( query=str(query), workspaces=workspaces, templates=templates, options=options, title=title, )
def _post(self, request): """ Prepare the POST context Args: request: Returns: """ error = None warning = None search_form = KeywordForm(data=request.POST) display_persistent_query_button = False # validate form if search_form.is_valid(): try: # get form values query_id = search_form.cleaned_data.get('query_id', None) keywords = search_form.cleaned_data.get('keywords', None) global_templates = search_form.cleaned_data.get( 'global_templates', []) user_templates = search_form.cleaned_data.get( 'user_templates', []) # get all template version manager ids template_version_manager_ids = global_templates + user_templates # from ids, get all version manager version_manager_list = version_manager_api.get_by_id_list( template_version_manager_ids) # from all version manager, build a list of all version (template) template_ids = [] map(lambda x: template_ids.extend(x.versions), version_manager_list) if query_id is None or keywords is None: error = "Expected parameters are not provided" else: # get query query = query_api.get_by_id(query_id) if len(query.data_sources) == 0: warning = "Please select at least 1 data source." else: # update query query.templates = template_api.get_all_by_id_list( template_ids) query.content = json.dumps( get_full_text_query(keywords)) query_api.upsert(query) display_persistent_query_button = True except DoesNotExist: error = "An unexpected error occurred while retrieving the query." except Exception, e: error = "An unexpected error occurred: {}.".format(e.message)
def build_query(self, query, templates, options): """ Build the raw query. Prepare the query for a keyword search. Args: query: templates: options: Returns: The raw query. """ # build query builder query = json.dumps(get_full_text_query(query)) return super(ExecuteKeywordQueryView, self).build_query(str(query), templates, options)
def build_query(self, query, templates, options): """ Build the raw query Prepare the query for a keyword search Args: query: ObjectId templates: ObjectId options: Query options Returns: The raw query """ # build query builder query = json.dumps(get_full_text_query(query)) return super(ExecuteLocalKeywordQueryView, self).build_query(str(query), templates, options)
def _get_query_prepared(self, keywords, query, request, template_ids): """ Prepare the query for suggestions. Args: keywords: query: request: template_ids: Returns: """ # update query query.templates = template_api.get_all_by_id_list(template_ids) # TODO: improve query to get better results query.content = json.dumps(get_full_text_query(keywords)) # Data source is local query.data_sources = [create_local_data_source(request)] return query
def execute_full_text_query(text, list_metadata_format_id): """ Execute full text query on OaiRecord data collection. Args: text: Keywords. list_metadata_format_id: List of metadata format id to search on. Returns: List of OaiRecord. """ full_text_query = get_full_text_query(text) # only no deleted records, add harvester_metadata_format criteria full_text_query.update({'deleted': False}, { 'harvester_metadata_format__id': { '$in': list_metadata_format_id } }) return OaiRecord.objects.find(full_text_query)