Текстовые фильтры (наследуют nc_search_language_filter) обрабатывают текст как на этапе индексирования, так и при обработке поисковых запросов. Результатом применения цепочки фильтров является набор слов в том виде, в котором они подлежат индексированию (отсечены короткие и стоп-слова, слова приведены к одному регистру, находятся в базовой форме).
Например, если перед вами стоит задача организовать поиск текста на французском языке без учёта диакритических знаков (диакритические знаки не обязательны для заглавных букв, поэтому слова в верхнем регистре могут не находиться при поиске), вы можете создать текстовый фильтр:
<?php class my_diacritics_filter extends nc_search_language_filter { public function filter(array $words) { foreach ($words as $i => $word) { $words[$i] = strtr($word, "ÀÂÇÈÉÊËÎÏÔÙÛÜŸ", "AACEEEEIIOUUUY"); } return $words; } }
Созданный фильтр необходимо добавить в список на вкладке «Настройки» — «Расширения», указав соответствующий язык и подобрав приоритет таким образом, чтобы фильтр находился между фильтрами nc_search_language_filter_case и nc_search_language_filter_analyzer (приоритет от 61 до 99).