 |
(PHP
4 >= 4.0.5) udm_load_ispell_data - загружает ispell-данные. Описаниеint
udm_load_ispell_data (int agent, int var, string val1, string val2, int
flag) Возвращает TRUE при успехе, FALSE
при ошибке. agent - ссылка на идентификатор агента, полученная
вызовом udm_alloc_agent(). var
- параметр, указывающий источник ispell-данных. Может иметь значения, указанные
далее. После использования этой функции, чтобы освободить память, выделенную
для ispell-данных, используйте udm_free_ispell_data(),
даже если вы применяете режим UDM_ISPELL_TYPE_SERVER. Самым быстрым режимом
является UDM_ISPELL_TYPE_SERVER. UDM_ISPELL_TYPE_TEXT медленнее, а UDM_ISPELL_TYPE_DB
- самый медленный. Вышеприведённый патэрн TRUE для mnoGoSearch
3.1.10 - 3.1.11. Планируется ускорить режим DB в будущих версиях, и он будет быстрее
режима TEXT. 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().
Пример:
if (! udm_load_ispell_data($udm,UDM_ISPELL_TYPE_DB,'','',1)) { printf("Error
#%d: '%s'\n", udm_errno($udm), udm_error($udm)); exit; } |
UDM_ISPELL_TYPE_AFFIX
- указывает, что ispell-данные должны быть загружены из файла, и инициирует загрузку
файла аффиксов. В этом случае val1 определяет двухбуквенный код
языка для которого загружаются аффиксы, а val2 - путь к файлу.
Пожалуйста, обратите внимание, что, если введён относительный путь, модуль ищет
файл не в UDM_CONF_DIR, а относительно текущего пути, т.е. пути, в котором выполняется
скрипт. В случае ошибки в этом режиме, например, если файл отсутствует, функция
возвратит FALSE, и будет выведено сообщение об ошибке. Доступ
к тексту сообщения об ошибке не может быть получен через udm_error()
и udm_errno(), поскольку эти функции могут
возвращать только сообщения, ассоциированные с SQL. См. описание параметра flag
в UDM_ISPELL_TYPE_DB. Пример:
if ((! udm_load_ispell_data($udm,UDM_ISPELL_TYPE_AFFIX,'en','/opt/ispell/en.aff',0))
|| (! udm_load_ispell_data($udm,UDM_ISPELL_TYPE_AFFIX,'ru','/opt/ispell/ru.aff',0))
|| (! udm_load_ispell_data($udm,UDM_ISPELL_TYPE_SPELL,'en','/opt/ispell/en.dict',0))
|| (! udm_load_ispell_data($udm,UDM_ISPELL_TYPE_SPELL,'ru','/opt/ispell/ru.dict',1)))
{ exit; } |
Примечание: flag
равен 1 только в последнем вызове.
UDM_ISPELL_TYPE_SPELL
- указывает, что ispell-данные должны быть загружены из файла, и инициирует загрузку
файла ispell-словаря. В этом случае val1 определяет двухбуквенный
код языка для которого загружаются аффиксы, а val2 - путь к файлу.
Пожалуйста, обратите внимание, что, если введён относительный путь, модуль ищет
файл не в UDM_CONF_DIR, а относительно текущего пути, т.е. пути, в котором выполняется
скрипт. В случае ошибки в этом режиме, например, если файл отсутствует, функция
возвратит FALSE, и будет выведено сообщение об ошибке. Доступ
к тексту сообщения об ошибке не может быть получен через udm_error()
и udm_errno(), поскольку эти функции могут
возвращать только сообщения, ассоциированные с SQL. См. описание параметра flag
в UDM_ISPELL_TYPE_DB.
if ((! Udm_Load_Ispell_Data($udm,UDM_ISPELL_TYPE_AFFIX,'en','/opt/ispell/en.aff',0))
|| (! Udm_Load_Ispell_Data($udm,UDM_ISPELL_TYPE_AFFIX,'ru','/opt/ispell/ru.aff',0))
|| (! Udm_Load_Ispell_Data($udm,UDM_ISPELL_TYPE_SPELL,'en','/opt/ispell/en.dict',0))
|| (! Udm_Load_Ispell_Data($udm,UDM_ISPELL_TYPE_SPELL,'ru','/opt/ispell/ru.dict',1)))
{ exit; } |
Примечание: равен 1
только в последнем вызове.
UDM_ISPELL_TYPE_SERVER
- включает поддержку spell-сервера. Параметр val1 указывает адрес
хоста host, на котором работает spell-сервер. val2 ` ещё не используется,
но в будущих релизах будет указывать номер порта, используемого spell-сервером.
Параметр flag в этом случае не нужен, так как ispell-данные хранятся
на spel-сервере уже отсортированными. 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 или новее.
Пример:
if (!udm_load_ispell_data($udm,UDM_ISPELL_TYPE_SERVER,'','',1)) { printf("Error
loading ispell data from server<br>\n"); exit; } |
|  |