Задать вопрос
  • Как в sql сделать поиск по фамилии с опечатками?

    @Sumor
    К сожалению не сильно знаком с DB2, но думаю подходы примерно одинаковые.
    Во-первых, поиск можно сделать регистронезависимым на уровне БД или таблицы. В MSSQL он по-умолчанию регистронезависимый. Гуглить по словам COLLATION COLLATE. Например посмотреть тут.

    Ну а дальше можно использовать алгоритмы нечёткого поиска.
    Достаточно подробно в соответствующей статье на Хабре.
    Если у вас БД небольшая (до тысяч фамилий), то можно её банально пробежать и сравнить с искомой по расстоянию Дамерау-Левенштейна. Оформить можно функцией. Работать будет примерно так:
    SELECT * FROM People WHERE Distance(People.Family, 'Иванов') < 2

    Если сравнение по расстоянию занимает много времени, то можно применить алгоритм триграмм.
    Повесить триггер на вставку/изменение: генерировать по фамилии триграммы и складывать в отдельную таблицу.
    Тогда для поиска необходимо искомую фамилию также разложить на триграммы и искать их в таблице триграмм.
    Примерная фамилия должна соответствовать почти всем искомым триграммам.

    Можно использовать механизмы свёрток, по типу SOUNDEX, но они дают большой шум и работают хорошо только при записи фамилий на слух.
    Ответ написан
    1 комментарий
  • Как в sql сделать поиск по фамилии с опечатками?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    В принципе можно автоматизировать процесс с опечаткой, то есть чтобы скрипт разбирал введенное слово и сам подставлял варианты с опечаткой.

    Ну и простейшие обработки, например приводить введенное имя к нужному регистру перед тем как отправлять sql запрос, проверять наличие англоязычных букв и цифр, заменять их на соответствующие русские или удалять.
    Ответ написан
    1 комментарий
  • Пространственно-временная фильтрация (регрессионный анализ) в OpenCV

    Akson87
    @Akson87
    Ну как-бы Лукас-Канаде делает именно то, что Вы описали, ищет корреляцию в окне для нескольких хороших точек. Посмотрите еще раз в сторону оптического потока, для этой задачи он должен дать весьма хорошую точность. Возможно Вы когда экспериментировали с ним, выбрали точки неудачно или параметры. Как найдете движение всех точек, можно попробовать найти движение, которое соответствует фону.
    Ответ написан
    2 комментария