|
Пользовательский аналог LIKE
|
|||
---|---|---|---|
#18+
Пользовательский аналог LIKE Может, кто писал пользовательский аналог LIKE и может поделится. Проблема в поиске по базе електронных компонентов, озадачили в отделе продаж. Проблема в том что не было единой системы, когда создавали базу. перелопатить несколько милионов записей не реально, когда нибудь приведут к одному стандарту, а поиск нужен сейчас. например конденсатор могли занести так: 22mF 0603 50V X7R а могли 22µF 0603 50V X7R или 22000nF 0603 50V X7R или 0603 22 mF 50V X7R комбинаций море. как в этом салате находить с более менее приемлемой точностью нужную позицию, ну или несколько позиций которые более менее совпадают. конденсатор просто для наглядности привел, компонентов море и вариантов тоже море. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 13:44 |
|
Пользовательский аналог LIKE
|
|||
---|---|---|---|
#18+
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*' ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 14:40 |
|
Пользовательский аналог LIKE
|
|||
---|---|---|---|
#18+
AlexDE, иногда приходиться учитывать и то, что некоторые символы латиницы/кирилицы похожи (могут быть введены русские С или Х вместо латинских) иногда и цифры врут(4 и ч, 0 и о,....) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 14:43 |
|
Пользовательский аналог LIKE
|
|||
---|---|---|---|
#18+
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. Аналогично нормализуется и строка запроса. После чего её токены ищутся в нормализованных токенах записей, и выбираются те записи, в которых имеется наибольшее количество соответствий. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 14:49 |
|
Пользовательский аналог LIKE
|
|||
---|---|---|---|
#18+
Akina, Примерно такое и сотворил, работает тормозно да и результат не очень, приходится в ручную перепроверять, хотел узнать, может кто подобное делал, посмотреть сравнить, что то лучшее соорудить. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 15:18 |
|
Пользовательский аналог LIKE
|
|||
---|---|---|---|
#18+
По-моему лучше в полуручном режиме разложить строку на правильные токены один раз и дальше не допускать такого бардака с вводом. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 15:23 |
|
Пользовательский аналог LIKE
|
|||
---|---|---|---|
#18+
MrShin, Это понятно, но во первых базу набирали лет 15 и по мере смены персонала, каждый заносил как ему нравится, а во вторых там не только конденсаторы, а транзистры, диоды, память, процессоры, резисторы, кнопки, пружинки, болтики... если я все на ключевые слова разбивать буду, у меня база токенов, как база материалов будет. Как то тот же гоогле из набора букв выдает наиболее похожий результат, и довольно точно, даже подсказывает, что может не правильно параметры поиска задали. Вот примерно такойже функционал и хотелось бы иметь. Ну или хоть немного к этому приближенный. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 15:37 |
|
Пользовательский аналог LIKE
|
|||
---|---|---|---|
#18+
MrShinПо-моему лучше в полуручном режиме разложить строку на правильные токены один раз и дальше не допускать такого бардака с вводом. Совершенно так (в полуручном) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 15:40 |
|
Пользовательский аналог LIKE
|
|||
---|---|---|---|
#18+
AlexDEу меня база токенов, как база материалов с подобным выбором столкнулись, когда выбирали радиоэлементы и прочее --одно и тоже набито за 30 с лишним лет по разному --причем было ограничение 60 символов на длину и поэтому очень много сокращений -- в придачу путаница в буквах/цифрах поэтому токены не создать, в принципе перебить невозможно --наслоятся новые ошибки --часто невозможно расшифровать сокращение основного наименования --путаница рус/лат, цифра/буква ... поэтому цеплялись за ГОСТ/ОСТ/ТУ, если знали если не знали --искали похожую позицию, уточняли ГОСТ затем искали уже по ГОСТ ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 15:52 |
|
Пользовательский аналог LIKE
|
|||
---|---|---|---|
#18+
ПЕНСИОНЕРКАAlexDEу меня база токенов, как база материалов с подобным выбором столкнулись, когда выбирали радиоэлементы и прочее --одно и тоже набито за 30 с лишним лет по разному --причем было ограничение 60 символов на длину и поэтому очень много сокращений -- в придачу путаница в буквах/цифрах поэтому токены не создать, в принципе перебить невозможно --наслоятся новые ошибки --часто невозможно расшифровать сокращение основного наименования --путаница рус/лат, цифра/буква ... поэтому цеплялись за ГОСТ/ОСТ/ТУ, если знали если не знали --искали похожую позицию, уточняли ГОСТ затем искали уже по ГОСТ Это ж какая пересортица в номенклатурном справочнике (как вспомню, так вздрогну) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 15:58 |
|
Пользовательский аналог LIKE
|
|||
---|---|---|---|
#18+
ROIЭто ж какая пересортица в номенклатурном справочнике (как вспомню, так вздрогну) стали переходить на 1с --там ввели группировки ,например --крепеж(гайки, болты,винты....) ,госты... --радиоэлементы(реле, конденсаторы ,...),ту.. и никто ничего не мог найти, так как никто не знал в какой группе искать часто требовалось найти из разных гостов (например алм груг д100 или около любого госта) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 16:10 |
|
Пользовательский аналог LIKE
|
|||
---|---|---|---|
#18+
AlexDE, удаляем символы ненужные в данном конкретном случае, т.е. пробелы, символы типа ъ,ь - цель уменьшить длину слова-это делается как в искомом списке так и в базе (у меня база небольшая была около 50 тыс. строк, но поиск велся по названиям журналов прессы-так что длина строки была около 25 символов) и создаете соответствия (что имеет несколько названий) и начинаете шариться в базе - не нашли - уменьшаете на 1 символ справа - снова поехали. процент подобных действий у меня был 97 процентов (тоже не очень результат) проблема была в том что часть из того что анализировалось в базе отсутствовало либо было заведено с иным названием (скотч вместо клейкая лента - не найдешь (как пример) (если только соответствий не делать)) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2019, 12:47 |
|
Пользовательский аналог LIKE
|
|||
---|---|---|---|
#18+
ПЕНСИОНЕРКАROIЭто ж какая пересортица в номенклатурном справочнике (как вспомню, так вздрогну) стали переходить на 1с --там ввели группировки ,например --крепеж(гайки, болты,винты....) ,госты... --радиоэлементы(реле, конденсаторы ,...),ту.. и никто ничего не мог найти, так как никто не знал в какой группе искать часто требовалось найти из разных гостов (например алм груг д100 или около любого госта) заводим таблицу номенклатурный "правильный" справочник (с группами подгруппами с рюшками с перделками ) заводим таблицу "кто же так называет руки бы оборвал" это будут псевдонимы (чёкнутые названия) из приходников, ну и связанные один ко многим к "правильному справочнику" это то-что на ум приходит. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2019, 13:59 |
|
Пользовательский аналог LIKE
|
|||
---|---|---|---|
#18+
AlexDE, Насколько я понял речь идёт о справочнике, который не меняется со скоростью тысяча записей в день а достаточно статичен. Прилепите у себя где то сбоку hytechSql с единственной таблицей id,name. Штатный HyTech-ский like по name(естественно проиндексированному) ваши миллионы как семечки щёлкать будет. Причём на любую самую дикую маску мгновенно выдаст количество совпадений. http://hytechdb.ru/index.php?s=prod ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2019, 11:30 |
|
Пользовательский аналог LIKE
|
|||
---|---|---|---|
#18+
experienceAlexDE, Насколько я понял речь идёт о справочнике, который не меняется со скоростью тысяча записей в день а достаточно статичен. Прилепите у себя где то сбоку hytechSql с единственной таблицей id,name. Штатный HyTech-ский like по name(естественно проиндексированному) ваши миллионы как семечки щёлкать будет. Причём на любую самую дикую маску мгновенно выдаст количество совпадений. http://hytechdb.ru/index.php?s=prod дык а кто маску будет "изобретать" или он сам умеет? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2019, 12:29 |
|
Пользовательский аналог LIKE
|
|||
---|---|---|---|
#18+
ROI, Заменять мозги ищущего не обещалось. Но скорострельность такова, что можно накапливать серию масок в истории запросов и фильтровать повторы. т.е. полуавтоматизация с использованием очень шустрого поисковика. Повторюсь, полезно только при достаточно редко меняющихся данных, специфический индекс строится. Новые накопления нужно периодически перемещать переиндексированием. p.s. в стародавние времена при причёсывании массива переходящего как вымпел ещё с мэйнфреймовского ADABAS-а например было выявлено 78 способов написать Алексеевский район. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2019, 17:38 |
|
Пользовательский аналог LIKE
|
|||
---|---|---|---|
#18+
Например для оговоренного случая 0603 22 mF 50V X7R Если представить, что цифры точно должны быть верны иначе это просто бред лего найдет все "*2*2*5*0*7*" Нужно экспериментировать на реальном массиве и искать закономерности. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2019, 17:48 |
|
Пользовательский аналог LIKE
|
|||
---|---|---|---|
#18+
поставить рядом питон, в него функцию нечеткого сравнния строк. и с помщью всего этого очистить уже данные. или чистить, постепенно. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2019, 18:22 |
|
Пользовательский аналог LIKE
|
|||
---|---|---|---|
#18+
AlexDE, Видимо сначала придётся средствами VBA привести всё к единой схеме, а уже потом жизнь наладится. Была такая у меня задача оч давно. Именно так. Постепенно заменяя дерьмо на конфетки и удалось вылезти из той ямы. Заменять естественно автоматически. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2019, 18:35 |
|
Пользовательский аналог LIKE
|
|||
---|---|---|---|
#18+
Задача немного в другом, так скажем база за многие года набита хаотически и в ней надо что то найти, предположим тот же вариант с кондесатором. каждая фирма обозначает его по своему, ну так скажем Самсунг пишет С0603473ПФ...., короче набор символов. как сделать оптимальний поиск , примерно так получаеш заявку , ну скажем там 100нФмлцц и у тебя подходящие варианты выдает, сразу скажу *0603*22* не прокатывает, точнее нельзя довериться что базу правильно набирали. Я даже не знаю как описать, может на 80 процентов совпадать, а могут в другой последовательности, буквы стоять ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 18:10 |
|
Пользовательский аналог LIKE
|
|||
---|---|---|---|
#18+
AlexDE, Думаю, телепатов, среди даже тех у кого опыт под 40 лет как у меня нет. Всё что можем предложить это разные варианты ускорения не чёткого поиска. Для создания фактически экспертной системы, данных у нас просто нет. В базе кроме наименования наверняка есть ещё какая то инфа о которой мы не догадываемся и которая в создаваемой системе может быть серьёзными опорными точками. Каждый будет говорить о своём опыте. Мне в разных областях приходилось решать аналогичные задачи и всегда это прежде всего набор (в терминах станочного производства) "приспособ" в руки человека с опытом, понимающего что он ищет, какие возможны варианты, с запоминанием внутри системы успешных попыток и распространением опыта на попытки последующие. p.s. Надежда на волшебный алгоритм исправления ошибок многих человеко-лет без участия человека очень наивна. p.p.s. Не знаю, что поменялось на сегодняшний день, но думаю в главном всё также: например в дактилоскопии эксперту в случае серьёзной экспертизы след-след, след-карта даётся так называемый рекомендательный список найденных совпадений. Чем качественнее поиск тем короче список, но окончательное решение за специалистом, который экспертизу подписывает. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 19:37 |
|
Пользовательский аналог LIKE
|
|||
---|---|---|---|
#18+
AlexDE, В этом дерьме очень легко утонуть. Лучше направить усилия на исправления ситуации. То есть тебе надо создать таблицу типов товара: конденсаторы транзисторы резисторы ....... Это будут группы. Таблица: Группы товаров. ===================== Затем создать таблицу "наименований товаров" с удобочитаемыми и правильными записями. Связь с группами по полю группа. Затем в своей огромной базе создать поле (правильное наименование - "STANDART") - это для связи с таблицей "наименований товаров". Далее создать маленькую функцию, которая будет постепенно заполнять в твоей огромной базе поле "наименований товаров". Это самое долгое и нудное занятие полуручного режима. Зато поиск у тебя наладится. И новые, поступающие названия , ты будешь сразу при занесении в большую базу, заполняя поле "наименований товаров", выбором из списка нужного значения. Или из двух списков. Группа товаров и наименование. Тогда у тебя всё придёт в норму. И не важно будет - что там на коробке пишут поставщики. А ковыряться поиском в этом великолепии, которое имеется сейчас.... это типа русской рулетки. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2019, 11:14 |
|
|
start [/forum/topic.php?fid=45&fpage=36&tid=1610834]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
29ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
others: | 310ms |
total: | 450ms |
0 / 0 |