212 похожих чатов

Всем привет! Есть задача искать в таблице персональные данные (ФИО, ДР,

Паспорт) с опечатками и выдавать лучшее найденное совпадение в Postgres. При чем искать опечатки по всему набору полей. Например имя и фамилия могут быть записаны так - "Ива нИванов" и тп приколы. Есть идея делать это следующим образом: склеить все поля в строку, разделив пробелом, положить в колонку типа TEXT, накинуть GiST и искать по этому "ключу". Проверил на 1млн записей - полет отличный. Всего таблица будет порядка 200млн записей.
При поиске буду находить наиболее "похожую" запись и программно разбивать строку на поля и перекладывать в json.
Насколько это норм идея?

10 ответов

8 просмотров

а зачем разбивать если у тебя в базе исходные данные есть? Обычно проблема именно с тем как искать по нескольким словам. Опечатки это поиск по триграммам всяким и т.д. и нужно еще готовить поисковой запрос нормально... Можно даже не особо склеивать а просто индекс по выражению делать

Gleb-Fault Автор вопроса
Sergey P
а зачем разбивать если у тебя в базе исходные данн...

Изначально база пустая и будет накапливаться. Накапливается не без ошибок. Да, проблема как искать по нескольким. В запросе участвуют все поля. Их штук 7. Вот я пытаюсь понять как это сделать эффективно. А выражение какое? Которое затрагивает несколько столбцов?

Gleb Fault
Изначально база пустая и будет накапливаться. Нака...

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

Gleb Fault
Изначально база пустая и будет накапливаться. Нака...

ну тип постгрес позволяет индексы по выражениям строить. Тип если ты юзаешь какой-нибудь concat_ws(' ' , firat_name, last_name, middle_name) то можно просто индекс по этому выражению жахнуть. Что бы не создавать лишних колонок и прочего. Но если есть возможность в коде потом ничего не "расклеивать" и юзать оригинальные данные то лучше так

Gleb-Fault Автор вопроса
Gleb Fault
В запросе все поля.

что пишут в поиске. Ну мол "вася пупкин 1990 года рождения" или там чего другое.

Gleb-Fault Автор вопроса
Sergey P
ну тип постгрес позволяет индексы по выражениям ст...

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

Gleb-Fault Автор вопроса
Sergey P
ну вот зачем себе сложности создавать?

Из соображений эффективности. Индекс по столбцу и индекс по выражению из 7 столбцов вроде разные вещи

Похожие вопросы

Обсуждают сегодня

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Почему стало ломаться на D11? "739002.86400000' is not a valid timestamp" function IncDateTime(aStamp:TTimeStamp;aKind:TTriggerKind;aInterval:Integer):TDateTime; //aStamp = 2...
Катерина Свиридова
8
Привет всем. Подскажите где можно посмотреть, какая версия электрон, поддерживает версии windows? Некий changelog. Мне бы желательно, поддержку 7,8,10... latest, как понимаю и...
Anonym Squad
21
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
Есть ли смысл устраиваться на 1с ? Даст это плюс в дальнейшем трудоустройстве на php? Просто у меня в городе вакансий на пхп нету. Или лучше удаленно искать. Опыта работы нету...
Azamat
14
а где есть mysql cloud кроме яндекс-клауд?
Oleg Nosov
13
hi im a cs student. i need some advice from people who have enough experience in Embedded Software. I need to know whether this profession is suitable for me. I have watched s...
Sahand 🏔️
8
Не ну фпц - это уже просто троллинг какой-то. Элементарный код нельзя собрать. ЧЯДНТ? program Project1; {$mode delphi} uses SysUtils, Classes, Generics.Collections; var...
Peter
4
вот что получается в интерпрететоре, работает и результаты выгляд разумными, но то как выглядит код мне не нравиться, а понять куда двигаться не очень могу, если кому не лень ...
Fedor
42
Карта сайта