<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def search(self, *filters, **kwargs):
 """Shortcut to generate a new temporary search report using provided filters and return the resulting records Args: *filters (tuple):
 Zero or more filter tuples of (field_name, operator, field_value) Keyword Args: keywords (list(str)):
 List of strings of keywords to use in report search limit (int):
 Set maximum number of returned Records, defaults to `Report.default_limit`. Set to 0 to return all records Notes: Uses a temporary Report instance with a random name to facilitate search. Records are normally paginated, but are returned as a single list here, potentially causing performance issues with large searches. All provided filters are AND'ed together Filter operators are available as constants in `swimlane.core.search` Examples: :: # Return records matching all filters with default limit from swimlane.core import search records = app.records.search( ('field_name', 'equals', 'field_value'), ('other_field', search.NOT_EQ, 'value') ) :: # Run keyword search with multiple keywords records = app.records.search(keywords=['example', 'test']) :: # Return all records from app records = app.records.search(limit=0) Returns: :class:`list` of :class:`~swimlane.core.resources.record.Record`: List of Record instances returned from the search results """

        report = self._app.reports.build(
            'search-' + random_string(8),
            keywords=kwargs.pop('keywords', []),
            limit=kwargs.pop('limit', Report.default_limit)
        )

        for filter_tuples in filters:
            report.filter(*filter_tuples)

        return list(report)