<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):
 """ Searchs user defined locations for search pattern. :return: Method success. :rtype: bool """


        self.__interrupt_search()

        search_pattern = self.Search_comboBox.currentText()
        replacement_pattern = self.Replace_With_comboBox.currentText()
        if not search_pattern:
            return False

        SearchAndReplace.insert_pattern(search_pattern, self.__search_patterns_model)
        SearchAndReplace.insert_pattern(replacement_pattern, self.__replace_with_patterns_model)

        location = umbra.ui.common.parse_location(
            foundations.strings.to_string(self.Where_lineEdit.text()) or
            self.__targets_format.format(self.__default_target))
        self.__ignore_hidden_files and location.filters_out.append("\\\.|/\.")

        settings = self.__get_settings()

        self.__search_worker_thread = Search_worker(self, search_pattern, location, settings)
        # Signals / Slots.
        self.__search_worker_thread.searchFinished.connect(self.__search_worker_thread__searchFinished)

        self.__container.engine.worker_threads.append(self.__search_worker_thread)
        self.__container.engine.start_processing("Searching In Files ...")
        self.__search_worker_thread.start()
        return True