API лексикона - поиск фразовой статьи

C/C++:

int sol_FindPhrase( HGREN hEngine, const wchar_t * Phrase, int Flags )

int sol_FindPhrase8( HGREN hEngine, const char * PhraseUtf8, int Flags )

C#:

int sol_FindPhrase( IntPtr hEngine, string Phrase, int Flags )

Delphi:

function sol_FindPhrase( hEngine: PInteger; Phrase: PWideChar; Flags: integer ): integer;

Аргументы:

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

Phrase - текст фразовой статьи.

Flags - дополнительные управляющие флаги, 0 - искать с игнорированием регистра, 1 - учитывать регистр.

Возвращает:

-1 - фразовая статья не найдена в лексиконе.

число>=0 - первичный ключ (id) фразовой статьи.

Примечания

Функции sol_FindPhrase и sol_FindPhrase8 отличаются текстовой кодировкой, в которой задан текст фразы. Функция с суффиксом 8 получает строку в кодировке utf-8 и удобна для использования в программах на Linux или с библиотекой Qt.

Для получения дескриптора грамматического словаря можно использовать функции sol_CreateGrammarEngine и sol_LoadDictionary[A,W,8].

Для поиска фразовых статей по регулярному выражению можно воспользоваться функцией sol_ListEntries.

Поиск фразовых статей в SQL словаре выполняется запросом к таблице SG_TENTRY.

В ORM библиотеке фразовые статьи представляются объектами класса Phrase.

Зная id фразовой статьи, можно вызывать другие функции API словаря - sol_DeletePhrase, sol_GetPhraseText, sol_GetPhraseLanguage, sol_GetPhraseClass и пр.

Примеры

C++:

#include "solarix_grammar_engine.h"

...

HGREN hEngine = sol_CreateGrammarEngineW(L"..\\..\\bin-windows\\dictionary.xml");

//...

int phrase_id = sol_FindPhrase( hEngine, L"dirt road", 0 );

// ...
  

C#:

IntPtr gren = SolarixGrammarEngineNET.GrammarEngine.sol_CreateGrammarEngineW("..\\..\\bin-windows\\dictionary.xml");

// ...

int phrase_id = SolarixGrammarEngineNET.GrammarEngine.sol_FindPhrase( hEngine, "dirt road", 0 );

Delphi:

uses SysUtils, Windows,
    _sg_api in '..\..\..\..\..\include\lem\solarix\_sg_api.pas',
    GrammarEngineApi in '..\..\..\..\..\include\lem\solarix\GrammarEngineApi.pas';

var hEngine: PInteger;
var id_phrase1, id_phrase2, id_phrase3: integer;
var phrase_text: WideString;
begin

 hEngine := sol_CreateGrammarEngineA( '..\..\..\..\..\bin-windows\dictionary.xml' );

 id_phrase1 := sol_FindPhrase( hEngine, WideString('грамматический словарь русского языка'), 0 );
 id_phrase2 := sol_AddPhrase( hEngine, WideString('проверяем добавление фразы'), -1, -1, 0 );
 id_phrase3 := sol_FindPhrase( hEngine, WideString('проверяем добавление фразы'), 0 );

 phrase_text := sol_GetPhraseTextPAS( hEngine, id_phrase3 );
 sol_DeletePhrase( hEngine, id_phrase3 );

 sol_DeleteGrammarEngine(hEngine);

end.

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

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

English version of this page

Лексикон

Фразовые статьи

Класс Phrase - представление фразовой статьи в ORM библиотеке

API layer C++ source code: grammar_engine_api.cpp

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

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