HLINKSINFO sol_ListLinksTxt( HGREN hEngine, int EntryID, int LinkType, int Flags )
Аргументы:
hEngine - дескриптор созданного вызовом sol_CreateGrammarEngine экземпляра словаря, подключенного к словарной базе.
EntryID - id словарной или фразовой статьи в левой части связей тезауруса.
LinkType - числовой код типа связи
Flags - 0 для работы со словарными стаьями, 1 для фразовых статей.
Возвращает:
Дескриптор списка, состоящего из описаний связей.
Либо NULL - сведений в тезаурусе нет.
Функция возвращает дескриптор списка с описанием связей. Для получения количества элементов в списке следует использовать функцию sol_LinksInfoCount. Удаление списка, после завершения работы с ним - sol_DeleteLinksInfo. Для доступа к элементам описания связи в списке используются функции sol_LinksInfoType, sol_LinksInfoID, sol_LinksInfoEKey1, sol_LinksInfoEKey2, sol_LinksInfoTagsTxt и sol_LinksInfoFlagsTxt.
Список символических констант для основных типов связей можно найти в файле _sg_api.h для C/C++. Для языков на платформе .NET аналогичные константы объявлены в сборке gren_consts.dll в пространстве имен SolarixGrammarEngineNET.GrammarEngineAPI. Перечень с пояснениями можно найти на этой странице.
Основное назначение этой функции - дать исчерпывающее описание связей в тезаурусе, включая теги и флаги. Кроме того, она умеет работать как со словарными, так и с фразовыми статьями. Таким образом, она дает намного более широкий доступ к базе данных тезауруса. Обратной стороной медали является достаточно низкая производительность, в сравнении с sol_Thesaurus.
Пример на C++ - вывод информации из тезауруса для словарной статьи:
#include "solarix_grammar_engine.h"
// ...
HGREN hEngine = sol_CreateGrammarEngineW(L"..\\..\\bin-windows64\\dictionary.xml");
//...
int key1 = sol_FindEntry8( hEngine, "GALAXY", NOUN_en, -1 );
HLINKSINFO hList1 = sol_ListLinksTxt( hEngine, key1, TO_RUSSIAN_link, 0 );
wchar_t buf[64];
if( hList1!=NULL )
{
int n=sol_LinksInfoCount(hEngine,hList1);
for( int i=0; i<n; ++i )
{
int link_type = sol_LinksInfoType( hEngine, hList1, i );
int link_id = sol_LinksInfoID( hEngine, hList1, i );
int ekey1 = sol_LinksInfoEKey1( hEngine, hList1, i );
int ekey2 = sol_LinksInfoEKey2( hEngine, hList1, i );
const wchar_t *tags = sol_LinksInfoTagsTxt( hEngine, hList1, i );
// Получим имя статьи в правой части
sol_GetEntryName( hEngine, ekey2, buf );
printf( "link id=%d from ekey1=%d to ekey2=%d ", link_id, ekey1, ekey2 );
wide(buf); // выводим unicode-строку с именем словарной статьи справа
printf( " tags=" );
wide(tags); // выводим список тегов
}
sol_DeleteLinksInfo(hEngine,hList1);
}
Приобретение SDK грамматического словаря
Вернуться к списку функций API
Получение информации из тезауруса - функция API sol_Thesaurus
Класс WordLink - связь между словарными статьями
Класс PhraseLink - связь между фразовыми статьями
API layer C++ source code: grammar_engine_api.cpp
© Elijah Koziev 2010
Поисковая система
SDK Поисковой системы
Экранный переводчик
|
|
изменено 23-Aug-11 | ||||||||||||||||||||||||||||||||||||||