|
(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;
}
|
|
|