C/C++:
int sol_LoadDictionaryW( HGREN hEngine, const wchar_t * Filename )
int sol_LoadDictionaryA( HGREN hEngine, const char * Filename )
int sol_LoadDictionary8( HGREN hEngine, const char * FilenameUtf8 )
int sol_LoadDictionaryExW( HGREN hEngine, const wchar_t * Filename, int InstanceFlags )
int sol_LoadDictionaryExA( HGREN hEngine, const char * Filename, int InstanceFlags )
int sol_LoadDictionaryEx8( HGREN hEngine, const char * FilenameUtf8, int InstanceFlags )
C#:
int sol_LoadDictionaryW( HGREN hEngine, string Filename )
int sol_LoadDictionaryExW( HGREN hEngine, string Filename, int InstanceFlags )
Delphi:
function sol_LoadDictionaryW( hEngine: PInteger; Filename: PWideChar ): Integer;
function sol_LoadDictionaryA( hEngine: PInteger; Filename: PAnsiChar ): Integer;
function sol_LoadDictionary8( hEngine: PInteger; Filename: PAnsiChar ): Integer;
function sol_LoadDictionaryExW( hEngine: PInteger; Filename: PWideChar; InstanceFlags: Integer ): Integer;
function sol_LoadDictionaryExA( hEngine: PInteger; Filename: PAnsiChar; InstanceFlags: Integer ): Integer;
function sol_LoadDictionaryEx8( hEngine: PInteger; Filename: PAnsiChar; InstanceFlags: Integer ): Integer;
PHP:
sol_LoadDictionaryEx8( $hEngine, $FilenameUtf8, $InstanceFlags )
Аргументы:
hEngine - дескриптор созданного вызовом sol_CreateGrammarEngine экземпляра грамматического словаря.
Filename - путь к файлу описания словаря, обычно это dictionary.xml, создаваемый при сборке словаря. Этот файл содержит перечень имен бинарных файлов базы данных словаря.
InstanceFlags - комбимбинация флагов, управляющих загрузкой. Значение 0 обеспечивает режим по умолчанию, соответствующий функциям sol_CreateGrammarEngine[A,W,8]. Константа SOL_GREN_LAZY_LEXICON изменяет режим работы со словарными статьями, они будут подгружаться с диска по мере необходимости.
Возвращает:
0 - Cловарь не загружен из-за ошибки. Текст описания ошибки можно попробовать узнать вызовом sol_GetError. Среди самых распространенных причин ошибок - некорректно заданный путь или версия словаря несовместима с версией движка.
1 - Словарь успешно загружен.
2 - Словарь уже был загружен, новая загрузка не выполнена. Следует использовать sol_UnloadDictionary для выгрузки.
Функции отличаются текстовой кодировкой, в которой задан путь к словарю. Функция с суффиксом A принимает строку в однобайтовой кодировке текущей локали, с суффиксом W принимает строку широких символов, с суффиксом 8 - строку в кодировке utf-8. Последний вариант наиболее удобен для использования в Linux.
Грамматический словарь загружается в оперативную память, занимая достаточно много ресурсов. Кроме того, загрузка словаря - достаточно длительный процесс, обычно это несколько секунд.
Во многих случаях можно совмещать создание грамматического движка и загрузку словаря в рамках единственного вызова функции sol_CreateGrammarEngine.
Из-за особенностей реализации на Windows гарантируется загрузка словаря только с локальных дисков. Попытка загрузки словаря, находящегося на сетевом ресурсе, скорее всего приведет к ошибке.
Функции потокобезопасны, но итоговый результат работы может быть непредсказуем, если в разных потоках загружаются разные словари в один и тот же экземпляр.
Файлы словаря могут быть залочены после начала загрузки до момента выгрузки (удаления из памяти).
Загруженный словарь можно выгрузить, освободив занимаемую им оперативную память, с помощью функции sol_UnloadDictionary.
Пример на C++:
#include "solarix_grammar_engine.h"
...
HGREN hEngine = sol_CreateGrammarEngine(NULL);
//...
int rc = sol_LoadDictionaryW( L"..\\..\\bin-windows\\dictionary.xml" );
if( rc!=1 )
{
int err_len = sol_GetErrorLen(hEngine);
wchar_t *buf = new wchar_t[err_len+1];
sol_GetError( hEngine, buf, err_len+1 );
// ...
sol_ClearError(hEngine);
delete[] buf;
}
Пример на C#:
IntPtr gren = SolarixGrammarEngineNET.GrammarEngine.sol_CreateGrammarEngineW("");
// ...
int loading_ok = SolarixGrammarEngineNET.GrammarEngine.sol_LoadDictionaryW( gren, "dictionary.xml" );
if( loading_ok!=1 )
{
DictionaryLoadError();
}
Приобретение SDK грамматического словаря
API layer C++ source code: grammar_engine_api.cpp
Вернуться к списку функций API
© Elijah Koziev 2010
Поисковая система
SDK Поисковой системы
Экранный переводчик
|
|
изменено 13-Mar-11 | ||||||||||||||||||||||||||||||||||||||