/** * Фильтры сделаны нестандартным для Lucene способом; оправдания следующие: * - возможно, в будущем в модуле будет свой парсер, и он будет обрабатывать * ситуации с синонимами и проч. переписыванием запросов, e.g.: * (word1 word2) → (word1 word2 syn2); "word1 word2" → ("word1 word2" OR "word1 syn2") * - чтобы сделать через addFilter(), нужно создать дублирующие классы или класс-прокси * (или отказаться от идеи возможного использования фильтров netcat с * другими поставщиками поиска, которые [*может быть*] будут) * - стандартные фильтры создают множество временных объектов * (каждый фильтр, если он что-то сделал, создает новый токен) * * @param string $term * @return array может содержать 0 (стоп-слова), 1 или несколько (синонимы) элементов * */ protected function apply_nc_filters($term) { $context = nc_search::get_current_context(); return nc_search_extension_manager::get('nc_search_language_filter', $context)->stop_on(array())->apply('filter', array($term)); }