powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Пользовательский аналог LIKE
23 сообщений из 23, страница 1 из 1
Пользовательский аналог LIKE
    #39774464
AlexDE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пользовательский аналог LIKE

Может, кто писал пользовательский аналог LIKE и может поделится.
Проблема в поиске по базе електронных компонентов, озадачили в отделе продаж.
Проблема в том что не было единой системы, когда создавали базу.
перелопатить несколько милионов записей не реально, когда нибудь приведут к одному стандарту, а поиск нужен сейчас.
например конденсатор могли занести так:
22mF 0603 50V X7R
а могли
22µF 0603 50V X7R
или
22000nF 0603 50V X7R
или
0603 22 mF 50V X7R
комбинаций море.
как в этом салате находить с более менее приемлемой точностью нужную позицию, ну или несколько позиций которые более менее совпадают.
конденсатор просто для наглядности привел, компонентов море и вариантов тоже море.
...
Рейтинг: 0 / 0
Пользовательский аналог LIKE
    #39774520
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexDE0603 22 mF 50V X7R
например так
--если порядок неизвестен
naim like '*0603*' and naim like '*22*' and naim like '*50V*' and naim like '*X7R*'

если 22 всегда после 0603 то можно уменьшить ложные нахождения
naim like '*0603*22*' and naim like '*50V*' and naim like '*X7R*'
...
Рейтинг: 0 / 0
Пользовательский аналог LIKE
    #39774526
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexDE,

иногда приходиться учитывать и то, что некоторые символы латиницы/кирилицы похожи (могут быть введены русские С или Х вместо латинских)

иногда и цифры врут(4 и ч, 0 и о,....)
...
Рейтинг: 0 / 0
Пользовательский аналог LIKE
    #39774529
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexDEнапример конденсатор могли занести так:
22mF 0603 50V X7R
а могли
22µF 0603 50V X7R
или
22000nF 0603 50V X7R
или
0603 22 mF 50V X7R
комбинаций море.
как в этом салате находить с более менее приемлемой точностью нужную позицию, ну или несколько позиций которые более менее совпадают.Примеры того, что в БД, понятны... а что будет вводиться в качестве строки поиска?

Вообще подход - декомпозиция текущего наименования на токены и их нормализация.
Скажем, применительно к показанным вариантам:
mF, µF, nF, V - это субтокены единиц измерения. Правило нормализации - проверка, что к нему спереди присоединено значение, если нет - присоединить предыдущее значение. Все значения нормализовать к единой минимальной единице (для первых трёх это nF, V нормализовать не требуется). В итоге все 4 варианта будут приведены к одному и тому же варианту из 4 токенов - 0603, 22000nF, 50V и X7R.
Аналогично нормализуется и строка запроса.
После чего её токены ищутся в нормализованных токенах записей, и выбираются те записи, в которых имеется наибольшее количество соответствий.
...
Рейтинг: 0 / 0
Пользовательский аналог LIKE
    #39774569
AlexDE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

Примерно такое и сотворил, работает тормозно да и результат не очень, приходится в ручную перепроверять, хотел узнать, может кто подобное делал, посмотреть сравнить, что то лучшее соорудить.
...
Рейтинг: 0 / 0
Пользовательский аналог LIKE
    #39774578
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По-моему лучше в полуручном режиме разложить строку на правильные токены один раз и дальше не допускать такого бардака с вводом.
...
Рейтинг: 0 / 0
Пользовательский аналог LIKE
    #39774593
AlexDE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrShin,

Это понятно, но во первых базу набирали лет 15 и по мере смены персонала, каждый заносил как ему нравится, а во вторых там не только конденсаторы, а транзистры, диоды, память, процессоры, резисторы, кнопки, пружинки, болтики... если я все на ключевые слова разбивать буду, у меня база токенов, как база материалов будет. Как то тот же гоогле из набора букв выдает наиболее похожий результат, и довольно точно, даже подсказывает, что может не правильно параметры поиска задали. Вот примерно такойже функционал и хотелось бы иметь. Ну или хоть немного к этому приближенный.
...
Рейтинг: 0 / 0
Пользовательский аналог LIKE
    #39774599
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrShinПо-моему лучше в полуручном режиме разложить строку на правильные токены один раз и дальше не допускать такого бардака с вводом.
Совершенно так (в полуручном)
...
Рейтинг: 0 / 0
Пользовательский аналог LIKE
    #39774613
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexDEу меня база токенов, как база материалов
с подобным выбором столкнулись, когда выбирали радиоэлементы и прочее
--одно и тоже набито за 30 с лишним лет по разному
--причем было ограничение 60 символов на длину и поэтому очень много сокращений
-- в придачу путаница в буквах/цифрах

поэтому токены не создать, в принципе
перебить невозможно --наслоятся новые ошибки
--часто невозможно расшифровать сокращение основного наименования
--путаница рус/лат, цифра/буква ...

поэтому цеплялись за ГОСТ/ОСТ/ТУ, если знали
если не знали --искали похожую позицию, уточняли ГОСТ
затем искали уже по ГОСТ
...
Рейтинг: 0 / 0
Пользовательский аналог LIKE
    #39774619
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПЕНСИОНЕРКАAlexDEу меня база токенов, как база материалов
с подобным выбором столкнулись, когда выбирали радиоэлементы и прочее
--одно и тоже набито за 30 с лишним лет по разному
--причем было ограничение 60 символов на длину и поэтому очень много сокращений
-- в придачу путаница в буквах/цифрах

поэтому токены не создать, в принципе
перебить невозможно --наслоятся новые ошибки
--часто невозможно расшифровать сокращение основного наименования
--путаница рус/лат, цифра/буква ...

поэтому цеплялись за ГОСТ/ОСТ/ТУ, если знали
если не знали --искали похожую позицию, уточняли ГОСТ
затем искали уже по ГОСТ
Это ж какая пересортица в номенклатурном справочнике (как вспомню, так вздрогну)
...
Рейтинг: 0 / 0
Пользовательский аналог LIKE
    #39774627
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ROIЭто ж какая пересортица в номенклатурном справочнике (как вспомню, так вздрогну)
стали переходить на 1с --там ввели группировки ,например
--крепеж(гайки, болты,винты....) ,госты...
--радиоэлементы(реле, конденсаторы ,...),ту..

и никто ничего не мог найти, так как никто не знал в какой группе искать
часто требовалось найти из разных гостов (например алм груг д100 или около любого госта)
...
Рейтинг: 0 / 0
Пользовательский аналог LIKE
    #39774866
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexDE, удаляем символы ненужные в данном конкретном случае, т.е. пробелы, символы типа ъ,ь - цель уменьшить длину слова-это делается как в искомом списке так и в базе (у меня база небольшая была около 50 тыс. строк, но поиск велся по названиям журналов прессы-так что длина строки была около 25 символов) и создаете соответствия (что имеет несколько названий) и начинаете шариться в базе - не нашли - уменьшаете на 1 символ справа - снова поехали. процент подобных действий у меня был 97 процентов (тоже не очень результат) проблема была в том что часть из того что анализировалось в базе отсутствовало либо было заведено с иным названием (скотч вместо клейкая лента - не найдешь (как пример) (если только соответствий не делать))
...
Рейтинг: 0 / 0
Пользовательский аналог LIKE
    #39774892
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПЕНСИОНЕРКАROIЭто ж какая пересортица в номенклатурном справочнике (как вспомню, так вздрогну)
стали переходить на 1с --там ввели группировки ,например
--крепеж(гайки, болты,винты....) ,госты...
--радиоэлементы(реле, конденсаторы ,...),ту..

и никто ничего не мог найти, так как никто не знал в какой группе искать
часто требовалось найти из разных гостов (например алм груг д100 или около любого госта)

заводим таблицу номенклатурный "правильный" справочник (с группами подгруппами с рюшками с перделками )
заводим таблицу "кто же так называет руки бы оборвал" это будут псевдонимы (чёкнутые названия) из
приходников, ну и связанные один ко многим к "правильному справочнику"

это то-что на ум приходит.
...
Рейтинг: 0 / 0
Пользовательский аналог LIKE
    #39774893
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
типа "система нечеткого поиска"
...
Рейтинг: 0 / 0
Пользовательский аналог LIKE
    #39775079
experience
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexDE,
Насколько я понял речь идёт о справочнике, который не меняется со скоростью тысяча записей в день а достаточно статичен.
Прилепите у себя где то сбоку hytechSql с единственной таблицей id,name. Штатный HyTech-ский like по name(естественно проиндексированному) ваши миллионы как семечки щёлкать будет. Причём на любую самую дикую маску мгновенно выдаст количество совпадений.

http://hytechdb.ru/index.php?s=prod
...
Рейтинг: 0 / 0
Пользовательский аналог LIKE
    #39775103
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
experienceAlexDE,
Насколько я понял речь идёт о справочнике, который не меняется со скоростью тысяча записей в день а достаточно статичен.
Прилепите у себя где то сбоку hytechSql с единственной таблицей id,name. Штатный HyTech-ский like по name(естественно проиндексированному) ваши миллионы как семечки щёлкать будет. Причём на любую самую дикую маску мгновенно выдаст количество совпадений.

http://hytechdb.ru/index.php?s=prod
дык а кто маску будет "изобретать" или он сам умеет?
...
Рейтинг: 0 / 0
Пользовательский аналог LIKE
    #39775164
experience
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ROI,
Заменять мозги ищущего не обещалось. Но скорострельность такова, что можно накапливать серию масок в истории запросов и фильтровать повторы. т.е. полуавтоматизация с использованием очень шустрого поисковика.

Повторюсь, полезно только при достаточно редко меняющихся данных, специфический индекс строится. Новые накопления нужно периодически перемещать переиндексированием.

p.s. в стародавние времена при причёсывании массива переходящего как вымпел ещё с мэйнфреймовского ADABAS-а например было выявлено 78 способов написать Алексеевский район.
...
Рейтинг: 0 / 0
Пользовательский аналог LIKE
    #39775168
experience
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например для оговоренного случая 0603 22 mF 50V X7R
Если представить, что цифры точно должны быть верны иначе это просто бред
лего найдет все "*2*2*5*0*7*"
Нужно экспериментировать на реальном массиве и искать закономерности.
...
Рейтинг: 0 / 0
Пользовательский аналог LIKE
    #39775173
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поставить рядом питон, в него функцию нечеткого сравнния строк.

и с помщью всего этого очистить уже данные. или чистить, постепенно.
...
Рейтинг: 0 / 0
Пользовательский аналог LIKE
    #39775177
Фотография час58
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexDE,

Видимо сначала придётся средствами VBA привести всё к единой схеме, а уже потом жизнь наладится.
Была такая у меня задача оч давно.
Именно так. Постепенно заменяя дерьмо на конфетки и удалось вылезти из той ямы.
Заменять естественно автоматически.
...
Рейтинг: 0 / 0
Пользовательский аналог LIKE
    #39775824
AlexDE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача немного в другом, так скажем база за многие года набита хаотически и в ней надо что то найти, предположим тот же вариант с кондесатором. каждая фирма обозначает его по своему, ну так скажем Самсунг пишет С0603473ПФ...., короче набор символов. как сделать оптимальний поиск , примерно так получаеш заявку , ну скажем там 100нФмлцц и у тебя подходящие варианты выдает, сразу скажу *0603*22* не прокатывает, точнее нельзя довериться что базу правильно набирали. Я даже не знаю как описать, может на 80 процентов совпадать, а могут в другой последовательности, буквы стоять
...
Рейтинг: 0 / 0
Пользовательский аналог LIKE
    #39775882
experience
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexDE,
Думаю, телепатов, среди даже тех у кого опыт под 40 лет как у меня нет.
Всё что можем предложить это разные варианты ускорения не чёткого поиска. Для создания фактически экспертной системы, данных у нас просто нет. В базе кроме наименования наверняка есть ещё какая то инфа о которой мы не догадываемся и которая в создаваемой системе может быть серьёзными опорными точками. Каждый будет говорить о своём опыте.
Мне в разных областях приходилось решать аналогичные задачи и всегда это прежде всего набор (в терминах станочного производства) "приспособ" в руки человека с опытом, понимающего что он ищет, какие возможны варианты, с запоминанием внутри системы успешных попыток и распространением опыта на попытки последующие.

p.s. Надежда на волшебный алгоритм исправления ошибок многих человеко-лет без участия человека очень наивна.
p.p.s. Не знаю, что поменялось на сегодняшний день, но думаю в главном всё также: например в дактилоскопии эксперту в случае серьёзной экспертизы след-след, след-карта даётся так называемый рекомендательный список найденных совпадений. Чем качественнее поиск тем короче список, но окончательное решение за специалистом, который экспертизу подписывает.
...
Рейтинг: 0 / 0
Пользовательский аналог LIKE
    #39776627
Фотография час58
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexDE,
В этом дерьме очень легко утонуть.
Лучше направить усилия на исправления ситуации.

То есть тебе надо создать таблицу типов товара:
конденсаторы
транзисторы
резисторы
.......
Это будут группы.
Таблица: Группы товаров.
=====================
Затем создать таблицу "наименований товаров" с удобочитаемыми и правильными записями.
Связь с группами по полю группа.

Затем в своей огромной базе создать поле (правильное наименование - "STANDART") - это для связи с таблицей "наименований товаров".

Далее создать маленькую функцию, которая будет постепенно заполнять в твоей огромной базе
поле "наименований товаров". Это самое долгое и нудное занятие полуручного режима.

Зато поиск у тебя наладится.
И новые, поступающие названия , ты будешь сразу при занесении в большую базу, заполняя поле "наименований товаров", выбором из списка нужного значения. Или из двух списков. Группа товаров и наименование.

Тогда у тебя всё придёт в норму. И не важно будет - что там на коробке пишут поставщики.

А ковыряться поиском в этом великолепии, которое имеется сейчас....
это типа русской рулетки.
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Пользовательский аналог LIKE
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]