После использования этой функции, для того, чтобы освободить память, выделенную
для ispell-данных, пожалуйста, используйте функцию
udm_free_ispell_data(), даже если вы используете режим
UDM_ISPELL_TYPE_SERVER.
Список параметров
agent
Ссылка на идентификатор агента, полученная после вызова
udm_alloc_agent().
var
Указывает источник ispell-данных. Может принимать следующие значения:
UDM_ISPELL_TYPE_DB - указывает, что ispell-данные должны быть загружены из SQL.
В этом случае параметры val1 и val2
игнорируются и должны быть пустыми. flag
должен быть равен 1.
Замечание:
flag указывает, что после загрузки ispell-данных
из определённого ресурса они должны быть отсортированы (это необходимо
для корректной работы ispell). В случае загрузки ispell-данных из файлов
может быть несколько вызовов функции udm_load_ispell_data(),
так что нет смысла сортировать данные после каждого вызова, кроме последнего.
Поскольку в режиме db все данные загружаются одним вызовом,
этот параметр должен иметь значение 1. В этом режиме,
в случае ошибки, например, если ispell-таблицы отсутствуют,
функция возвратит FALSE, а код и сообщение об ошибке будут доступны через
udm_error() и udm_errno().
UDM_ISPELL_TYPE_AFFIX - указывает, что ispell-данные должны быть загружены из
файла, и инициирует загрузку файла аффиксов. В этом случае val1
определяет двухбуквенный код языка, для которого загружаются аффиксы,
а val2 - путь к файлу. Пожалуйста, обратите внимание, что, если
введён относительный путь, модуль ищет файл не в UDM_CONF_DIR,
а относительно текущего пути, т.е. пути, в котором выполняется скрипт.
В случае ошибки в этом режиме, например, если файл отсутствует, функция возвратит
FALSE, и будет выведено сообщение об ошибке. Текст сообщения об ошибке не может быть
получен через udm_error() и udm_errno(),
так как эти функции могут возвращать только сообщения, связанные с SQL. Пожалуйста,
посмотрите описание параметра flag в UDM_ISPELL_TYPE_DB.
Пример #1 Пример использования udm_load_ispell_data()
UDM_ISPELL_TYPE_SPELL - указывает, что ispell-данные должны быть загружены из
файла, и инициирует загрузку файла ispell-словаря. В этом случае
val1 определяет двухбуквенный код языка, для которого
загружаются аффиксы,
а val2 - путь к файлу. Пожалуйста, обратите внимание, что, если
введён относительный путь, модуль ищет файл не в UDM_CONF_DIR,
а относительно текущего пути, т.е. пути, в котором выполняется скрипт.
В случае ошибки в этом режиме, например, если файл отсутствует, функция возвратит
FALSE, и будет выведено сообщение об ошибке. Текст сообщения об ошибке не может быть
получен через udm_error() и udm_errno(),
так как эти функции могут возвращать только сообщения, связанные с SQL. Пожалуйста,
посмотрите описание параметра flag в UDM_ISPELL_TYPE_DB.
UDM_ISPELL_TYPE_SERVER - включает поддержку spell-сервера.
Параметр val1 указывает
адрес хоста запущенного spell-сервера. val2
еще не используется, но в будущих версиях он будет указывать номер
порта, используемого spell-сервером. Параметр flag в
этом случае не нужен, так как ispell-данные хранятся на
spell-сервере уже отсортированными.
Spelld-сервер читает spell-данные из отдельного файла конфигурации
(по умолчанию /usr/local/mnogosearch/etc/spelld.conf), сортирует их и сохраняет в
памяти. С клиентами сервер взаимодействует с помощью двунаправленного общения:
все данные передаются в индексатор (так что индексатор стартует быстрее), из search.cgi сервер
получает слово для нормализации и затем передаёт клиенту (search.cgi) список
нормализованных словоформ. Это обеспечивает самую быструю, по сравнению с режимами db и text
обработку поисковых запросов (миную загрузку и сортировку всех spell-данных).
Функция udm_load_ispell_data() в режиме UDM_ISPELL_TYPE_SERVER
на самом деле не загружает ispell-данные, а только определяет адрес сервера.
Фактически, сервер автоматически используется функцией udm_find()
при выполнении поиска. В случае ошибок, например, если spell-сервер
не запущен или указан неправильный хост, возвращаемых сообщений нет
и конвертация ispell не работает.
Замечание:
Эта функция доступна в mnoGoSearch 3.1.12 или выше.
Пример:
<?php if (!udm_load_ispell_data($udm, UDM_ISPELL_TYPE_SERVER, '', '', 1)) { echo "Ошибка при загрузке ispell-данных с сервера<br />\n"; exit; } ?>
Самым быстрым режимом является UDM_ISPELL_TYPE_SERVER.
UDM_ISPELL_TYPE_TEXT медленнее
а UDM_ISPELL_TYPE_DB самый медленный. Вышесказанное верно для
mnoGoSearch 3.1.10 - 3.1.11. Планируется ускорить режим DB в будущих
версиях, и он будет быстрее режима TEXT.
val1
val2
flag
Возвращаемые значения
Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.
Примеры
Пример #2 Пример использования udm_load_ispell_data()