Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Firebird, InterBase Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
 Re: Нашел алгоритм, но он на mssql  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9388
Гаджимурадов Рустам,

+100500. Но прикручивать сфинкса в диплом считаю перебором.
19 мар 19, 13:25    [21837269]     Ответить | Цитировать Сообщить модератору
 Re: Нашел алгоритм, но он на mssql  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 29780

19.03.2019 13:25, Симонов Денис пишет:
> Но прикручивать сфинкса в диплом считаю перебором.

+500
не нужно делать то что ненужно (С)

Posted via ActualForum NNTP Server 1.5

19 мар 19, 13:30    [21837278]     Ответить | Цитировать Сообщить модератору
 Re: Нашел алгоритм, но он на mssql  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 47264

Симонов Денис
Но прикручивать сфинкса в диплом считаю перебором.
С другой стороны нейросеть, обученная на распознавание нечёткого соответствия -
вполне дипломный размерчик. Или это уже кандидатская?..

Posted via ActualForum NNTP Server 1.5

19 мар 19, 13:31    [21837280]     Ответить | Цитировать Сообщить модератору
 Re: Нашел алгоритм, но он на mssql  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 29780

магистерская!
тьфу, мля

Posted via ActualForum NNTP Server 1.5

19 мар 19, 13:39    [21837295]     Ответить | Цитировать Сообщить модератору
 Re: Нашел алгоритм, но он на mssql  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9388
Dimitry Sibiryakov,

да дело то не в размере диплома, а в том что это не соответствие теме. Зачем делать то чего от тебя не требуют.
Лучше бы ТС сосредоточился на основной задаче своего диплома, вместо копания в мелочах, которые нужны только в продакшене.
Препод не оценит всё равно.
19 мар 19, 13:44    [21837298]     Ответить | Цитировать Сообщить модератору
 Re: Нашел алгоритм, но он на mssql  [new]
DarkMaster
Member

Откуда: Donetsk,Ukraine
Сообщений: 6199
Может кому понадобится - вычисление расстояния Левенштейна для строк длиной до 1024 символов. Регистронезависимо. FB 2.5. Сильно не гонял, но вроде работает.

+
CREATE GLOBAL TEMPORARY TABLE GTT$LVN (
    ID        INTEGER,
    LVNVALUE  INTEGER
) ON COMMIT DELETE ROWS;

CREATE OR ALTER PROCEDURE LVNMIN3 (
    A INTEGER,
    B INTEGER,
    C INTEGER)
RETURNS (
    AMIN INTEGER)
AS
begin
  amin=a;
  if (b<amin) then amin=b;
  if (c<amin) then amin=c;
  suspend;
end

CREATE OR ALTER PROCEDURE LVNDIST (
    S VARCHAR(1024),
    T VARCHAR(1024))
RETURNS (
    DIST INTEGER)
AS
declare variable i integer;
declare variable j integer;
declare variable m integer;
declare variable n integer;
declare variable cost integer;
declare variable flip smallint;
declare variable cuthalf integer;
declare variable b1 integer;
declare variable b2 integer;
declare variable b3 integer;
begin
  s=upper(s);
  t=upper(t);

  cuthalf=2048;
  i=0;
  while (i<=2048) do
    begin
       insert into gtt$lvn(id,lvnvalue) values (:i,0);
       i=i+1;
    end

  cuthalf=1024;

  s=substring(s from 1 for cuthalf-1);
  t=substring(t from 1 for cuthalf-1);
  m=char_length(s);
  n=char_length(t);

  if (m=0) then dist=n;
  else
  if (n=0) then dist=m;
  else
     begin
       flip=0; -- false;
       i=0;
       while (i<=n) do
         begin
           update gtt$lvn set lvnvalue=:i where id=:i;
           i=i+1;
         end

       i=1;
       while (i<=m) do
          begin
            if (flip=1) then
               update gtt$lvn set lvnvalue=:i where id=0;
            else
               update gtt$lvn set lvnvalue=:i where id=:cuthalf;

            j=1;
            while (j<=n) do
               begin
                 if (substring(s from :i for 1)=substring(t from :i for 1)) then cost=0;
                 else cost=1;

                 if (flip=1) then
                     begin
                        select gtt$lvn.lvnvalue from gtt$lvn where gtt$lvn.id=:cuthalf+:j into :b1;
                        select gtt$lvn.lvnvalue from gtt$lvn where gtt$lvn.id=:j-1 into :b2;
                        select gtt$lvn.lvnvalue from gtt$lvn where gtt$lvn.id=:cuthalf+:j-1 into :b3;

                        select lvnmin3.amin from lvnmin3(:b1+1,:b2+1,:b3+:cost) into :b1;

                        update gtt$lvn set lvnvalue=:b1 where id=:j;
                     end
                 else begin
                        select gtt$lvn.lvnvalue from gtt$lvn where gtt$lvn.id=:j into :b1;
                        select gtt$lvn.lvnvalue from gtt$lvn where gtt$lvn.id=:cuthalf+:j-1 into :b2;
                        select gtt$lvn.lvnvalue from gtt$lvn where gtt$lvn.id=:j-1 into :b3;

                        select lvnmin3.amin from lvnmin3(:b1+1,:b2+1,:b3+:cost) into :b1;

                        update gtt$lvn set lvnvalue=:b1 where id=:cuthalf+:j;
                      end

                j=j+1;
              end

        if (flip=1) then flip=0;
        else flip=1;

        i=i+1;
     end

       if (flip=1) then
          select gtt$lvn.lvnvalue from gtt$lvn where id=:cuthalf+:n into :dist;
       else
          select gtt$lvn.lvnvalue from gtt$lvn where id=:n into :dist;

    end
  suspend;
end
19 мар 19, 14:30    [21837363]     Ответить | Цитировать Сообщить модератору
 Re: Нашел алгоритм, но он на mssql  [new]
Alepawka
Member

Откуда:
Сообщений: 40
Мимопроходящий,
Простите, признаю свою ошибку, не компетентен в этом вопросе, и делаю поспешные выводы.
Но как быть, если различия в 2 буквы, находящихся в разных местах слова?
Проходить по каждой букве и добавлять '%'?
19 мар 19, 14:34    [21837374]     Ответить | Цитировать Сообщить модератору
 Re: Нашел алгоритм, но он на mssql  [new]
Alepawka
Member

Откуда:
Сообщений: 40
Filippov Dmitry,
А не подскажите, есть ли тут личные сообщения? Или вы хотите перейти в другую платформу(telegram, vk и до)?
19 мар 19, 14:36    [21837376]     Ответить | Цитировать Сообщить модератору
 Re: Нашел алгоритм, но он на mssql  [new]
Alepawka
Member

Откуда:
Сообщений: 40
DarkMaster,
Спасибо большое, надеюсь это именно то, что я искал🤗
19 мар 19, 14:39    [21837378]     Ответить | Цитировать Сообщить модератору
 Re: Нашел алгоритм, но он на mssql  [new]
Alepawka
Member

Откуда:
Сообщений: 40
DarkMaster,
Почитал я теорию, написал этот запрос. Не работает. А вы где его взяли? Просто хотел почитать источник, да и попытаться сделать его правильным
21 мар 19, 11:06    [21839301]     Ответить | Цитировать Сообщить модератору
 Re: Нашел алгоритм, но он на mssql  [new]
DarkMaster
Member

Откуда: Donetsk,Ukraine
Сообщений: 6199
Alepawka,

Тупо взял и перевел дельфийский код отсюда:

https://ru.wikibooks.org/wiki/Реализации_алгоритмов/Расстояние_Левенштейна
21 мар 19, 12:27    [21839430]     Ответить | Цитировать Сообщить модератору
 Re: Нашел алгоритм, но он на mssql  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9388
Alepawka,

напиши UDF. Это не долго, зато не нужно будет всякой ереси с временными таблицами
21 мар 19, 12:35    [21839438]     Ответить | Цитировать Сообщить модератору
 Re: Нашел алгоритм, но он на mssql  [new]
DarkMaster
Member

Откуда: Donetsk,Ukraine
Сообщений: 6199
Симонов Денис,

Если бы были массивы и обращение к определенному символу в строке - ереси бы не было :)
21 мар 19, 13:00    [21839476]     Ответить | Цитировать Сообщить модератору
 Re: Нашел алгоритм, но он на mssql  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 29780

21.03.2019 13:00, DarkMaster пишет:
> Если бы были массивы и обращение к определенному символу в строке - ереси бы не было :)

offtop: а массивы так и не имплементировали в PSQL ?

Posted via ActualForum NNTP Server 1.5

21 мар 19, 14:05    [21839575]     Ответить | Цитировать Сообщить модератору
 Re: Нашел алгоритм, но он на mssql  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9388
Мимопроходящий,

нет. С учётом что массивы сейчас в нутрях есть BLOB, не очень то и хотелось
21 мар 19, 14:20    [21839591]     Ответить | Цитировать Сообщить модератору
 Re: Нашел алгоритм, но он на mssql  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 29780

21.03.2019 14:20, Симонов Денис пишет:
> нет. С учётом что массивы сейчас в нутрях есть BLOB, не очень то и хотелось

Ок.
ну да и хрен с ними.

Posted via ActualForum NNTP Server 1.5

21 мар 19, 14:28    [21839610]     Ответить | Цитировать Сообщить модератору
 Re: Нашел алгоритм, но он на mssql  [new]
Коваленко Дмитрий
Member

Откуда: Липецк
Сообщений: 536
Мимопроходящий
21.03.2019 14:20, Симонов Денис пишет:
> нет. С учётом что массивы сейчас в нутрях есть BLOB, не очень то и хотелось

Ок.
ну да и хрен с ними.


Да не ...
21 мар 19, 15:09    [21839705]     Ответить | Цитировать Сообщить модератору
 Re: Нашел алгоритм, но он на mssql  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 29780

21.03.2019 15:09, Коваленко Дмитрий пишет:
> Да не ...

предлагаешь вшить провайдер с поддержкой массивов внутрь PSQL? ;)

Posted via ActualForum NNTP Server 1.5

21 мар 19, 15:39    [21839750]     Ответить | Цитировать Сообщить модератору
 Re: Нашел алгоритм, но он на mssql  [new]
Коваленко Дмитрий
Member

Откуда: Липецк
Сообщений: 536
Мимопроходящий
21.03.2019 15:09, Коваленко Дмитрий пишет:
> Да не ...

предлагаешь вшить провайдер с поддержкой массивов внутрь PSQL? ;)


Не, предлагаю починить/доработать и заюзать в полнотекстовом поиске.

Как раз тянет на серьезную дипломную работу.
21 мар 19, 16:22    [21839824]     Ответить | Цитировать Сообщить модератору
 Re: Нашел алгоритм, но он на mssql  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9388
Коваленко Дмитрий,

после этого можно сразу в разработчики ядра Firebird просится
21 мар 19, 16:27    [21839830]     Ответить | Цитировать Сообщить модератору
 Re: Нашел алгоритм, но он на mssql  [new]
Alepawka
Member

Откуда:
Сообщений: 40
Симонов Денис,
Я так и сделал. Теперь мучаюсь с подключением udf. Писал функцию в lazarus. Библиотеку создал и закинул в udf/. Создаю функцию, пытаюсь использовать, а он не хочет. Хотя в rdb$function есть. Как быть?
21 мар 19, 17:41    [21839930]     Ответить | Цитировать Сообщить модератору
 Re: Нашел алгоритм, но он на mssql  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9388
Alepawka,

отсюда не видно что у тебя не фурычит. Текст ошибки где?
21 мар 19, 17:47    [21839936]     Ответить | Цитировать Сообщить модератору
 Re: Нашел алгоритм, но он на mssql  [new]
Alepawka
Member

Откуда:
Сообщений: 40
Симонов Денис,

 select search ('прив', 'прев') from rdb$dabase


Ошибка:
SQL error code -804
Function unknown
SEARCH
21 мар 19, 17:57    [21839957]     Ответить | Цитировать Сообщить модератору
 Re: Нашел алгоритм, но он на mssql  [new]
Alepawka
Member

Откуда:
Сообщений: 40
Вот

К сообщению приложен файл. Размер - 129Kb
21 мар 19, 17:58    [21839960]     Ответить | Цитировать Сообщить модератору
 Re: Нашел алгоритм, но он на mssql  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 29780

21.03.2019 17:58, Alepawka пишет:
> Вот



ты телефоном шо ле фоткал?!!

Posted via ActualForum NNTP Server 1.5

21 мар 19, 18:38    [21840006]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
Все форумы / Firebird, InterBase Ответить