def search(self, terms, prelim=True):
<EOL>if prelim:  <EOL><INDENT>res = self._resolve(terms, self.Id)<EOL>self._write(res)<EOL>return res<EOL><DEDENT>else:  <EOL><INDENT>res = []<EOL>for ds_id in self.otherIds:<EOL><INDENT>tmp = self._resolve(terms, [ds_id])<EOL>res.append(tmp[<NUM_LIT:0>])<EOL><DEDENT>self._write(res)<EOL>alt_terms = self._parseNames(res)<EOL>if len(alt_terms) == <NUM_LIT:0>:<EOL><INDENT>return False<EOL><DEDENT>else:<EOL><INDENT>terms = [each[<NUM_LIT:1>] for each in alt_terms]  <EOL>res = self._resolve(terms, self.Id)<EOL>self._write(res)<EOL>alt_res = self._replaceSupStrNames(res, alt_terms)<EOL>return alt_res<EOL><DEDENT><DEDENT>
Search terms against GNR. If prelim = False, search other datasources \
for alternative names (i.e. synonyms) with which to search main datasource.\
Return JSON object.