Анализаторы текста (наследуют класс nc_search_language_analyzer
) отвечают за приведение слов к базовой форме.
По умолчанию для морфологического анализа русского и английского языков используется библиотека phpMorphy (http://phpmorphy.sf.net/).
Библиотека также имеет словари для украинского, эстонского, немецкого языков (не поставляются с NetCat). Для этих языков необходимо скачать соответствующие UTF-8 словари с сайта phpMorphy, поместить их в папку modules/search/lib/3rdparty/phpmorphy/dicts/
, и добавить запись на вкладке «Настройки» — «Расширения» (интерфейс расширения — nc_search_language_analyzer
, класс расширения — nc_search_language_analyzer_morphy
, язык — Ukrainian, Estonian или German).
Примечание: словари phpMorphy для работы с модулем поиска должны иметь расширение с повторяющимся кодом языка вместо кода страны («uk_uk.bin», а не «uk_ua.bin», «et_et.bin» вместо «et_ee.bin»).
В комплекте поставки модуля поиска имеются стеммеры для русского и английского языков. Стеммеры представляют собой алгоритм, определяющий корень слова. Данный способ является гораздо менее точным, чем морфологический анализ, но требует меньше ресурсов сервера. Вы можете использовать стемминг вместо морфологического анализа в тех случаях, когда существует необходимость уменьшить нагрузку на процессор и время, необходимое для индексирования документов. Для использования стемминга вместо морфологического анализа:
nc_search_language_analyzer_morphy
для языка с кодом en
.nc_search_language_analyzer_morphy
на nc_search_language_analyzer_stemmer_en
и сохраните настройки.nc_search_language_analyzer_morphy
для языка с кодом ru
(класс стеммера — nc_search_language_analyzer_stemmer_ru
).
Для создания собственного стеммера можно создать класс, наследующий nc_search_language_stemmer
, в этом случае необходимо реализовать только метод stem(string $word)
.
Примечание: на вход анализатору (при настройках по умолчанию) попадают слова в верхнем регистре, в том же регистре должен быть результат выполнения обработки текста анализатором.