Создание экземпляра словаря и подключение к словарной базе данных

C/C++:

HGREN sol_CreateGrammarEngineW( const wchar_t * Filename )

HGREN sol_CreateGrammarEngineA( const char * Filename )

HGREN sol_CreateGrammarEngine8( const char * FilenameUtf8 )

 

HGREN sol_CreateGrammarEngineExW( const wchar_t * Filename, int InstanceFlags )

HGREN sol_CreateGrammarEngineExA( const char * Filename, int InstanceFlags )

HGREN sol_CreateGrammarEngineEx8( const char * FilenameUtf8, int InstanceFlags )

C#:

HGREN sol_CreateGrammarEngineW( string Filename )

HGREN sol_CreateGrammarEngineExW( string Filename, int InstanceFlags )

Delphi:

function sol_CreateGrammarEngineW( Filename: PWideChar ): PInteger;

function sol_CreateGrammarEngineA( Filename: PAnsiChar ): PInteger;

function sol_CreateGrammarEngine8( Filename: PAnsiChar ): PInteger;

function sol_CreateGrammarEngineExW( Filename: PWideChar; InstanceFlags: Integer ): PInteger;

function sol_CreateGrammarEngineExA( Filename: PAnsiChar; InstanceFlags: Integer ): PInteger;

function sol_CreateGrammarEngineEx8( Filename: PAnsiChar; InstanceFlags: Integer ): PInteger;

PHP:

sol_CreateGrammarEngineEx8( $Filename, $InstanceFlags )

Аргументы:

Filename - путь к файлу описания словаря, обычно это dictionary.xml, создаваемый при сборке словаря. Этот файл содержит перечень имен бинарных файлов базы данных словаря или параметры подключения к серверу со словарной базой данных.

InstanceFlags - комбимбинация флагов, управляющих загрузкой. Значение 0 обеспечивает режим по умолчанию, соответствующий функциям sol_CreateGrammarEngine[A,W,8]. Константа SOL_GREN_LAZY_LEXICON изменяет режим работы со словарными статьями, они будут подгружаться с диска по мере необходимости.

Возвращает:

Дескриптор экземпляра грамматического словаря.

Примечания

Если указать NULL или строку нулевой длины в качестве аргумента Filename, то функция создаст экземпляр грамматического словаря, но не будет подключать его к словарной базе. Для подключения к базе данных можно использовать вызов sol_LoadDictionary.

Функции отличаются текстовой кодировкой, в которой задан путь к словарю. Функция с суффиксом A принимает строку в однобайтовой кодировке текущей локали, с суффиксом W принимает строку широких символов, с суффиксом 8 - строку в кодировке utf-8. Последний вариант наиболее удобен для использования в Linux.

Грамматический словарь загружается в оперативную память и может занять много ресурсов. Кроме того, процесс загрузки словаря достаточно длительный. Этим процедурный API отличается от ORM библиотеки, в которой подсоединение к базе данных словаря происходит максимально быстро и без загрузки каких-либо данных в оперативную память.

Чтобы уменьшить время загрузки бинарного словаря и объем занимаемой при старте памяти, нужно использовать расширенные функции sol_CreateGrammarEngineEx[A,W,8], задавая параметр InstanceFlags как константу SOL_GREN_LAZY_LEXICON. В этом случае движок не будет загружать в оперативную память сразу все словарные статьи. Вместо этого он начнет их подгрузку по мере необходимости. Данный режим является единственно возможным для серверной версии грамматического словаря.

В силу особенностей реализации на Windows гарантируется загрузка бинарного словаря только с локальных дисков. Попытка загрузки словаря, находящегося на сетевом ресурсе, скорее всего приведет к ошибке. Если возникает необходимость работы нескольких экземпляров грамматического словаря с одним разделяемым словарем, то лучшим решением является переход на полноценный серверный вариант, в котором словарная база хранится в реляционной СУБД на выделенном сервере.

Файлы словаря могут быть залочены после начала загрузки до момента выгрузки (удаления из памяти). Это следует учитывать при пересборке пользовательского словаря. Серверный вариант лишен этого недостатка, но для него нужно помнить про работу кэша.

Загруженный словарь можно выгрузить, освободив занимаемую им оперативную память, с помощью функции sol_UnloadDictionary.

Пример на C++:

#include "solarix_grammar_engine.h"
...
HGREN hEngine = sol_CreateGrammarEngine(L"..\\..\\bin-windows\\dictionary.xml");
...

Пример на C#:

IntPtr gren = SolarixGrammarEngineNET.GrammarEngine.sol_CreateGrammarEngineW("dictionary.xml");
...

Пример на PHP:

$hEngine = sol_CreateGrammarEngineEx8("dictionary-mysql.xml",0);
...

Навигация по API грамматического словаря

Приобретение SDK грамматического словаря

API layer C++ source code: grammar_engine_api.cpp

English version of this page

Вернуться к списку функций API

  © Козиев Илья 2019
изменено 23-Oct-11