@utilities.arguments_not_none<EOL><INDENT>def get_assets_by_search(self, asset_query, asset_search):<DEDENT>
<EOL>and_list = list()<EOL>or_list = list()<EOL>for term in asset_query._query_terms:<EOL><INDENT>and_list.append({term: asset_query._query_terms[term]})<EOL><DEDENT>for term in asset_query._keyword_terms:<EOL><INDENT>or_list.append({term: asset_query._keyword_terms[term]})<EOL><DEDENT>if asset_search._id_list is not None:<EOL><INDENT>identifiers = [ObjectId(i.identifier) for i in asset_search._id_list]<EOL>and_list.append({'<STR_LIT>': {'<STR_LIT>': identifiers}})<EOL><DEDENT>if or_list:<EOL><INDENT>and_list.append({'<STR_LIT>': or_list})<EOL><DEDENT>view_filter = self._view_filter()<EOL>if view_filter:<EOL><INDENT>and_list.append(view_filter)<EOL><DEDENT>if and_list:<EOL><INDENT>query_terms = {'<STR_LIT>': and_list}<EOL><DEDENT>collection = JSONClientValidated('<STR_LIT>',<EOL>collection='<STR_LIT>',<EOL>runtime=self._runtime)<EOL>if asset_search.start is not None and asset_search.end is not None:<EOL><INDENT>result = collection.find(query_terms)[asset_search.start:asset_search.end]<EOL><DEDENT>else:<EOL><INDENT>result = collection.find(query_terms)<EOL><DEDENT>return searches.AssetSearchResults(result, dict(asset_query._query_terms), runtime=self._runtime)<EOL>
Gets the search results matching the given search query using the given search.

        arg:    asset_query (osid.repository.AssetQuery): the asset
                query
        arg:    asset_search (osid.repository.AssetSearch): the asset
                search
        return: (osid.repository.AssetSearchResults) - the asset search
                results
        raise:  NullArgument - ``asset_query`` or ``asset_search`` is
                ``null``
        raise:  OperationFailed - unable to complete request
        raise:  PermissionDenied - authorization failure
        raise:  Unsupported - ``asset_query`` or ``asset_search`` is not
                of this service
        *compliance: mandatory -- This method must be implemented.*