Определение значимой подстроки в штрихкоде

  1. 2 г. назад

    Господа, имею теоретический вопрос.
    Связанный со штрихкодированием.
    Вводные: есть некая база ШК. Небольшая. Либо это все товары одной организации, либо вовсе товары по одному документу.
    Есть возможность визуально читать ШК (допустим - это цифры ean-13).
    Итоговая цель: ввести данные без сканера ШК, указав несколько цифр ШК (вероятно - крайних справа, хотя это и не принципиально).
    Вопрос: каким алгоритмом можно определить минимальное число вводимых символов (цифр) для редуцирования входного массива ШК до приемлемого значения (например - три результирующих товара)?
    Я пока начал рисовать построение таблицы с генерацией колонок по разрядам и пошаговой свёрткой результата. Но прям чую, что это не оптимально...

    Теперь итоговый смысл: штрихкодирование помогает идентифицировать запись. Если можно обеспечить идентификацию без сканера, вводом приемлемого объёма символов, то это может сэкономить ресурсы на сканере, как минимум.

    Ответы: (11)
  2. В качестве примера: для спортклуба я создал механизм поиска по фамилии редуцированием общего списка. Это не моё изобретение, хотя делал с нуля. Т.е. можно сосканировать карту посетителя клуба, а можно ввести пару-тройку первых букв фамилии и выбрать нужного из короткого списка.
    Ну, разумеется, фамилии рационально отбирать по левой подстроке. А штрихкоды - по правой.

    Ответы: (4)
  3. В чем проблема если ты сделал слева, теперь сделать справа?

    Ответы: (3) (5)
  4. (2) в том, что, возможно, есть более оптимальный механизм. Я генерил несколько подмассивов, по длине строки. А нужно заранее определить число символов, которые гарантированно сведут выборку к требуемому количеству.

    Ответы: (5) (6)
  5. (1) а штрихкод не привязан к конкретной фамилии?...

    Ответы: (7)
  6. Дуб (2) в том, что, возможно, есть более оптимальный механизм. Я генерил несколько подмассивов, по длине строки. А нужно заранее определить число символов, которые гарантированно сведут выборку к требуемому количеству.

    Что ты там химичил непотребное. Делай ВЫБРАТЬ Первые 10 ИЗ.... ГДЕ Наименование ПОДОБНО &Наименование%

  7. Дуб А нужно заранее определить число символов

    Уверен, не нужно.
    Если ты хотишь сократить запросы к бд, чтоб те не происходили на каждый onChange, есть другие способы

    Ответы: (8) (10)
  8. (4) в спортклубе - привязан к карте, выдаваемой посетителю. Это не суть важно

  9. (6) примеры? Я хочу, чтобы не было обращений к БД до тех пор, пока не будет набрана минимально значимая строка.

    Ответы: (9) (10)
  10. (8) обычно отсчитывают таймером секунду с последнего кейдауна и делают запрос к бд.
    Ну а если был кейдаун, то секунда отсчитывается сначала и запроса к БД не делается.
    Есть React компоненты в которых это уже реализовано, либо не сложно снуля

  11. Дуб (6) примеры? Я хочу, чтобы не было обращений к БД до тех пор, пока не будет набрана минимально значимая строка.

    Чем тебе не нравится это событие поля? ИзменениеТекстаРедактирования

  12. 17.09.2021 16:34:16 отредактировано webdev

    (0) Перебором посчитай. В цикле. Каждый раз увеличивай количество символов на 1, и проверяй, достаточно ли этого количества чтобы товаров с одинаковым концом штрихкода было не более 3 штук.

    Пример. Проверяем для кол-ва цифр равное 1:
    Считаем кол-во товаров, штрихкод которых заканчивается на число из 1 цифры. Перебираем все возможные числа из 1 цифры. Допустим таких товаров посчиталось максимум 500 штук. Не подходит.
    Считаем то же самое для кол-ва цифр 2. Насчитали максимум 65 товаров. Тоже не подходит.
    Снова увеличиваем, до трех цифр. Насчитали максимум 8 товаров. Не подходит.
    Снова увеличиваем, до 4 цифр. Насчиталось максимум 2 товара. Подходит. Оставляем 4 цифры.

  13. Есть нюанс. Предположим, что при проверки на 3 цифры в прошлом примере большинство проверяемых чисел давали приемлемый результат с малым количеством товаров, и только небольшой набор чисел давали результат больше трех товаров, из-за чего мы отвергли это кол-во цифр. Но так как таких чисел было очень мало, то можно было бы остановиться и на 3 цифрах, и не идти до 4.

  14. Хотя с другой стороны, пофиг. Пусть будет 4. Зато при наборе этих цифр, могут быть случаи что продавец ввел всего 2-3, а нужный товар уже нашелся, и последние цифры вводить не обязательно. Но это если у тебя поиск будет при вводе каждой цифры, а не ждать пока все введет.

  15. А одним запросом - не?

    Ответы: (15)
  16. Дуб А одним запросом - не?

    Не реально. Оно того не стоит.

или зарегистрируйтесь чтобы ответить!