Ассоциация ЭБНИТ    ИРБИС-корпорация    Вики-Ирбис    Online/CHM справка Ирбис   
Опыт и разработки пользователей ИРБИС :  ИРБИС Irbis
 
Вопрос по Isis_dll
Пользователь: Леонид (IP-адрес скрыт)
Дата: 26, February, 2004 09:38

У меня возникли следующие вопросы:
1. как искать текстовые поля в БД на русском. Цифровые поля ищет а слова никак не хочет. Подскажите в чём проблема?
2. как редактировать вывод полей. Я вывожу isisrecdump'ом и у меня каша получается. Может подскажете что сделать с дампом или другой вывод подскажете.
3.Как искать с помощью isissrcsearch?

Заранее спасибо.

Re: Вопрос по Isis_dll
Пользователь: Cast (IP-адрес скрыт)
Дата: 08, March, 2006 17:58

Вместо IsisRecDump(), вроде, работает IsisRecFormat()...

А проблема с IsisSrcSearch() достала уже! Действительно, при поиске выражения на русском, ничего не находит! Файлы создаю в кодировке win-1251.
Но, что интересно, если попробовать БД SITE, к-ю можно скачать с выложенным сайтом "ИРБИС в Томске", то там сия функция находит текст на русском, если набрать его в верхнем регистре.
Интересно, почему?...

Использую php_isis.dll
php - 4.3.4
apache - 1.3.32
winXP

Re: Вопрос по Isis_dll
Пользователь: Карауш (IP-адрес скрыт)
Дата: 08, March, 2006 19:50

> ...если попробовать БД SITE, к-ю можно скачать с выложенным сайтом "ИРБИС в Томске",
> то там сия функция находит текст на русском, если набрать его в верхнем регистре.
> Интересно, почему?...

По причине использования индексных файлов. Т.е. в индексных файлах все буквы ЗАГЛАВНЫЕ. Кроме этого следует внимательно отнестись к наличию и постоянному использованию файлов *.tab , которые содержат таблицы перевода символов для конкретного языка из "больших" букв в "маленькие" и наоборот.

Re: Вопрос по Isis_dll
Пользователь: Cast (IP-адрес скрыт)
Дата: 09, March, 2006 14:01

Но в моих БД(на русском) IsisSrcSearch() все равно не ищет, даже если набранно "большими".
Англиские слова тоже не ищет, в обоих регистрах, цифры не ищет. Одним словом, ничего вообще не ищет... :(( чего только не пробую!
В чем же дело? Может в кодировке?

Re: Вопрос по Isis_dll
Пользователь: Бродовский (IP-адрес скрыт)
Дата: 09, March, 2006 17:11

Надо обязательно применять функцию
IsisAppUcTab

Re: Вопрос по Isis_dll
Пользователь: Бродовский (IP-адрес скрыт)
Дата: 09, March, 2006 17:16

...и не забудьте про символ @ в функции IsisAppUcTab - очень распространенная ошибка.

Re: Вопрос по Isis_dll
Пользователь: Cast (IP-адрес скрыт)
Дата: 09, March, 2006 17:37

Насколько я понимаю, IsisAppUcTab определяет таблицу преобразования регистров. Но, если я ее не указываю, и ввожу запрос большими буквами, все равно ничего нет....
Но, щас, по мере ковыряния, выяснилось что, IsisSrcSearch находит запросы, если они указаны в такой форме: "К=ЛЕЧЕНИЕ". Т.е. в точности как они написанны в файлах l01, l02, n01, n02.... Что обозначают эти буквы - "К=..." и т.п. в словарях?

Re: Вопрос по Isis_dll
Пользователь: Панев Максим (IP-адрес скрыт)
Дата: 09, March, 2006 18:00

Прикольна :).
Это префиксы словарей. Без них у вас и не будет искатся. Обязательно указывайте префикс.

Re: Вопрос по Isis_dll
Пользователь: Cast (IP-адрес скрыт)
Дата: 18, April, 2006 10:07

Всем пасиба.
Как бы заменить этот префикс чем-то, что обозначает любой символ,
как в регулярных выражениях...
Функцыя IsisSrcRegExpMap() не работает! Ей в мануале указано 6 параметров, она требует один почему-то - ISIS Space handle...
Когда указываю ей его - скрипт благополучно подвисает.... :((
Вообще, если кто знает, как бы сделать поиск по нескольким словам, чтобы префиксы не использовались?...
Типа ".=автор*.=название*.=год" и т.д, где точка означает любой символ...

Re: Вопрос по Isis_dll
Пользователь: Карауш (IP-адрес скрыт)
Дата: 18, April, 2006 14:04

Если работать напрямую с isis32.dll, то там есть возможность при последовательном поиске, без словарей и префиксов использовать поиск "по всем полям", для этого используется запрос:
v0:'искомое слово' - включение в поля
v0='искомое слово' - равенство одного из полей

Для работы с кириллицей необходимо подключать файлы isis*.tab
при запуске dll.


Re: Вопрос по Isis_dll
Пользователь: Слепой снайпер (IP-адрес скрыт)
Дата: 15, May, 2007 18:29

А вот кто что-нибудь может сказать про функцию, IsisRecDumpXml и соответсвенно, про функцию IsisRecUpdateXml из isis.dll v.7.5 :S
И судя по нотации в файле
(
IsisRecDumpXml@24
IsisRecUpdateXml@20
)
Это внутренние Java классы к соответсвующим функциям
(
IsisRecDump
IsisRecUpdate
)

Вообще то, кто-нибудь пользовал эту версию через Java?
Воообще то, тестер от другой версии но DLLVersion работает исправно
на всякий сам файл найтивных методов
ISISAPI.java
package ISISJAVA;
import ISISJAVA.*;

public class ISISAPI implements Constants, ErrorCodes {
    // 3.1. Application functions.

    public static native int IsisAppAcTab(int handle, String actab);

    public static native int IsisAppDebug(int apphandle,
                                          int debugflag);

    public static native int IsisAppDelete(int apphandle);

    public static native int IsisAppLogFile(int apphandle,
                                            String filename);

    public static native int IsisAppNew();

    public static native int IsisAppParGet(int apphandle,
                                           String ipar,
                                           String opar[],
                                           int areasize);

    public static native int IsisAppParSet(int apphandle,
                                           String apparea);

    public static native int IsisAppUcTab(int apphandle,
                                          String uctab);


    // 3.2. DLL functions.
    public static native float IsisDllVersion();


// 3.3. Link functions.


    public static native int IsisLnkIfLoad(int handle);

    public static native int IsisLnkIfLoadEx(int handle, int reset,
                                             int posts,
                                             int balan);

    public static native int IsisLnkSort(int handle);


// 3.4. Record functions.


    public static native int IsisRecControlMap(int handle,
                                               IsisRecControl ctrl);

    public static native int IsisRecCopy(int handle_from,
                                         int index_from,
                                         int handle_to,
                                         int index_to);

    public static native int IsisRecDirMap(int handle,
                                           int index,
                                           int firstpos,
                                           int lastpos,
                                           IsisRecDir dir[]);

    public static native int IsisRecDummy(int handle,
                                          int index);

    public static native int IsisRecDump(int handle,
                                         int index,
                                         String dump[],
                                         int areasize);

    public static native int IsisRecField(int handle,
                                          int index,
                                          int tag,
                                          int occ,
                                          String field_area[],
                                          int areasize);

    public static native int IsisRecFieldN(int handle,
                                           int index,
                                           int pos,
                                           String field_area[],
                                           int areasize);

    public static native int IsisRecFieldOcc(int handle,
                                             int index,
                                             int tag);

    public static native int IsisRecFieldUpdate(int handle,
                                                int index,
                                                String fldupd);

    public static native int IsisRecFormat(int handle,
                                           int index,
                                           String farea[],
                                           int areasize);

    public static native int IsisRecFormatEx(int handle,
                                             int index,
                                             int linesize,
                                             String farea[],
                                             int areasize);

    public static native int IsisRecIfUpdate(int handle,
                                             int mfn);

    public static native int IsisRecIfUpdateEx(int handle,
                                               int beginmfn,
                                               int endmfn,
                                               int keeppending);

    public static native int IsisRecIsoRead(int handle,
                                            int index);

    public static native int IsisRecIsoWrite(int handle,
                                             int index);

    public static native int IsisRecLeaderMap(int handle,
                                              int index,
                                              IsisRecLeader leader);

    public static native int IsisRecLnk(int handle,
                                        int beginmfn,
                                        int endmfn);

    public static native int IsisRecLockRecall(int handle,
                                               int index,
                                               int mfn,
                                               int tag,
                                               String password);

    public static native int IsisRecMerge(int handle_from, int index_from,
                                          int handle_to,
                                          int index_to);

    public static native int IsisRecMfn(int handle,
                                        int index);

    public static native int IsisRecMfnChange(int handle,
                                              int index,
                                              int mfn);

    public static native int IsisRecNew(int handle,
                                        int index);

    public static native int IsisRecNewLock(int handle,
                                            int index);

    public static native int IsisRecNvf(int handle,
                                        int index);

    public static native int IsisRecRead(int handle,
                                         int index,
                                         int mfn);

    public static native int IsisRecReadLock(int handle,
                                             int index,
                                             int mfn);

    public static native int IsisRecShelfSize(int handle,
                                              int index,
                                              int mem);

    public static native int IsisRecSubField(int handle,
                                             int index,
                                             int tag,
                                             int fldocc,
                                             String subfield,
                                             String subfield_area[],
                                             int areasize);

    public static native int IsisRecSubFieldEx(int handle,
                                               int index,
                                               int tag,
                                               int fldocc,
                                               String subfield,
                                               int subfldocc,
                                               String subfield_area[],
                                               int areasize);

    public static native int IsisRecUndelete(int handle,
                                             int index);

    public static native int IsisRecUnlock(int handle,
                                           int index);

    public static native int IsisRecUnlockForce(int handle,
                                                int index);

    public static native int IsisRecUpdate(int handle,
                                           int index,
                                           String sparser);

    public static native int IsisRecWrite(int handle,
                                          int index);

    public static native int IsisRecWriteLock(int handle,
                                              int index);

    public static native int IsisRecWriteUnlock(int handle,
                                                int index);


    // 3.5. Space functions.


    public static native int IsisSpaDb(int handle, String dbname);

    public static native int IsisSpaDelete(int handle);

    public static native int IsisSpaFdt(int handle, String fdtname);

    public static native int IsisSpaFst(int handle,
                                        String fstname);

    public static native int IsisSpaGf(int handle,
                                       String gizname);

    public static native int IsisSpaHeaderMap(int handle,
                                              IsisSpaHeader header);

    public static native int IsisSpaIf(int handle,
                                       String ifname);

    public static native int IsisSpaIfCreate(int handle);

    public static native int IsisSpaIsoDelim(int handle,
                                             String recdelim,
                                             String fielddelim);

    public static native int IsisSpaIsoIn(int handle,
                                          String filename);

    public static native int IsisSpaIsoOut(int handle,
                                           String filename);

    public static native int IsisSpaIsoOutCreate(int handle);

    public static native int IsisSpaMf(int handle,
                                       String mfname);

    public static native int IsisSpaMfCreate(int handle);

    public static native int IsisSpaMfUnlockForce(int handle);

    public static native int IsisSpaName(int handle,
                                         String sname);

    public static native int IsisSpaNew(int apphandle);

    public static native int IsisSpaPft(int handle,
                                        String format);

    public static native int IsisSpaRecDelim(int handle,
                                             String begindelim,
                                             String enddelim);

    public static native int IsisSpaRecShelves(int handle,
                                               int max_mst);

    public static native int IsisSpaStw(int handle,
                                        String stwname);

    public static native int IsisSpaTrmShelves(int handle,
                                               int max_trm);


    // 3.6. Search functions.

    public static native int IsisSrcHeaderMap(int apphandle, int tsfnum,
                                              int searchnum,
                                              IsisSrcHeader header);

    public static native int IsisSrcLogFileFlush(int apphandle,
                                                 int tsfnum);

    public static native int IsisSrcLogFileSave(int apphandle,
                                                int tsfnum,
                                                String filename);

    public static native int IsisSrcLogFileUse(int apphandle,
                                               int tsfnum,
                                               String filename);

    public static native int IsisSrcMfnMap(int apphandle,
                                           int tsfnum,
                                           int searchnum,
                                           int firstpos,
                                           int lastpos,
                                           IsisSrcMfn mfn[]);

    public static native int IsisSrcRegExpMap(int handle,
                                              String expr,
                                              int mfnb,
                                              int mfne,
                                              String areap,
                                              int areasize);

    public static native int IsisSrcSearch(int handle,
                                           int tsfnum,
                                           String express,
                                           IsisSrcHeader header);


    public static native int IsisSrcSearchEx(int handle, int tsfnum,
                                             String itable, String express,
                                             IsisSrcHeader header);


    // 3.7. Term functions.


    public static native int IsisTrmMfnMap(int handle, int index_trm,
                                           int firstpos,
                                           int lastpos,
                                           IsisTrmMfn mfn[]);

    public static native int IsisTrmPostingMap(int handle,
                                               int index_trm,
                                               int firstpos,
                                               int lastpos,
                                               IsisTrmPosting posting[]);

    public static native int IsisTrmReadMap(int handle,
                                            int index_trm, IsisTrmRead key);

    public static native int IsisTrmReadNext(int handle,
                                             int index_trm,
                                             IsisTrmRead key);

    public static native int IsisTrmReadPrevious(int handle,
                                                 int index_trm,
                                                 String prefix,
                                                 IsisTrmRead key);

    public static native int IsisTrmShelfSize(int handle,
                                              int index_trm,
                                              int mem);

    static {
        System.loadLibrary("isis32");
    }
}


Вложения: isis32.dll (464KB)   ISISJAVA.jar (7.9KB)   TestISISAPI.java (29.1KB)  
Re: Вопрос по Isis_dll
Пользователь: PRM (IP-адрес скрыт)
Дата: 31, August, 2007 09:07

Здравствуйте. А никто не сталкивался с Memory Allocation Error (ERR_MEMALLOCAT) при использовании IsisSrcSearch()? Кроме того, сомневаюсь, правильно ли использовал в коде IsisAppUcTab (правильная ли таблица .tab)...

//...

long a;
long h;
long r;
long mfn;
long mfn_start;
char area[MAXMFRL];
struct IsisRecControl controlStructure;
IsisSrcHeader searchStructure;
a = IsisAppNew( ); //ISIS new app
h = IsisSpaNew(a); //ISIS new space
char filename [] = "C:\\BASE\\DATAI\\Ibis\\Ibis";
r = IsisSpaMf(h, filename); //!!!!
r = IsisSpaIf(h, filename);
r = IsisAppUcTab(a, "@C:\\SDKS\\tab\\Isisacw");
r = IsisSrcSearch(h, 0, "A=011", TOCHAR(searchStructure)); //здесь ошибка

//...

r = IsisAppDelete(a);

//...

Re: Вопрос по Isis_dll
Пользователь: Alio (IP-адрес скрыт)
Дата: 31, August, 2007 09:53

PRM написал(а):
-------------------------------------------------------
> Здравствуйте. А никто не сталкивался с Memory
> Allocation Error (ERR_MEMALLOCAT) при
> использовании IsisSrcSearch()? Кроме того,
> сомневаюсь, правильно ли использовал в коде
> IsisAppUcTab (правильная ли таблица .tab)...
>
> //...
>
> long a;
> long h;
> long r;
> long mfn;
> long mfn_start;
> char area;
> struct IsisRecControl controlStructure;
> IsisSrcHeader searchStructure;
> a = IsisAppNew( ); //ISIS new app
> h = IsisSpaNew(a); //ISIS new space
> char filename [] = "C:\\BASE\\DATAI\\Ibis\\Ibis";
> r = IsisSpaMf(h, filename); //!!!!
> r = IsisSpaIf(h, filename);


> r = IsisAppUcTab(a, "@C:\\SDKS\\tab\\Isisacw");
Здесь путаница...
Если IsisAppUcTab то isisucw
а если IsisAppАcTab то isisаcw



> r = IsisSrcSearch(h, 0, "A=011",
> TOCHAR(searchStructure)); //здесь ошибка
>
> //...
>
> r = IsisAppDelete(a);
>
> //...

Re: Вопрос по Isis_dll
Пользователь: PRM (IP-адрес скрыт)
Дата: 31, August, 2007 10:09

Спасибо. Но (насколько я понимаю) ERR_MEMALLOCAT от применения IsisAppUcTab не зависит.

Re: Вопрос по Isis_dll
Пользователь: Error (IP-адрес скрыт)
Дата: 28, September, 2007 19:18

Можно ли физически удалить запись?

Re: Вопрос по Isis_dll
Пользователь: Карауш (IP-адрес скрыт)
Дата: 28, September, 2007 19:28

Да, если сделаете реорганизацию БД. Но до этого все записи неактуализированные нужно актуализировать.

Re: Вопрос по Isis_dll
Пользователь: Error (IP-адрес скрыт)
Дата: 24, October, 2007 19:05

Что за ошибка "Cisis Low Level Error Trap"? Это ошибка выдается при вызове функции IsisRecIfUpdate. Версия 7.

вот кусочек:

a = Isis_Net.Isis32.IsisAppNew();
h = Isis_Net.Isis32.IsisSpaNew(a);
r = Isis_Net.Isis32.IsisSpaMf(h, @"C:\bibl\bibl"); //r=0
r = Isis_Net.Isis32.IsisSpaIf(h, @"C:\bibl\bibl"); //r=0
r = Isis_Net.Isis32.IsisSpaFst(h, @"C:\bibl\bibl"); //r=0
r = Isis_Net.Isis32.IsisRecRead(h, 0, 3); //r=0
r = Isis_Net.Isis32.IsisRecFieldUpdate(h, 0, "a700#new field#");//r=0
r = Isis_Net.Isis32.IsisRecWrite(h, 0); //r=0
r = Isis_Net.Isis32.IsisRecIfUpdate(h, 22); //r=-301



Извините, только зарегистрированные пользователи могут писать в этом форуме.
This forum powered by Phorum.