найти дубликаты адресов в базе данных, чтобы пользователи не вводили их раньше?

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

16
задан animuson 24 October 2013 в 03:33
поделиться

8 ответов

Johannes:

@PConroy: Это было моей мыслью начальной буквы также. интересная часть на этом должна найти хорошие правила преобразования для различных частей адреса! Какие-либо хорошие предложения?

, Когда мы работали над этим типом проекта прежде, наш подход должен был взять наш существующий корпус адресов (150k или так), затем применить наиболее распространенные преобразования для нашего домена (Ирландия, таким образом, "Доктор"-> "Диск", "Ул."-> "Дорога", и т.д.). Я боюсь, что не было никакого всестороннего ресурса онлайн для таких вещей в то время, таким образом, мы закончили в основном придумывающий список сами, проверив вещи как телефонная книга (потребованный пространства там, адреса сокращены всем способом путей!). Как я упомянул ранее, Вы будете поражены, сколько "дубликатов" Вы обнаружите с добавлением только нескольких общих правил!

я недавно споткнулся через страницу с довольно всесторонним список сокращений адреса , хотя это является американским английским, таким образом, я не уверен, насколько полезный это было бы в Германии! Быстрый Google поднял несколько сайтов, но они казались, что спамная новостная рассылка подписалась прерывания. Хотя это было я гуглящий на английском языке, таким образом, у Вас может быть больше взгляда с "немецкими сокращениями адреса" на немецком языке:)

4
ответ дан ConroyP 24 October 2013 в 03:33
поделиться

Часто Вы используете ограничения в базе данных для обеспечения данных, чтобы быть "уникальными" в основанном на данных смысле.

Относительно "изоморфизмов" я думаю, что Вы самостоятельно, т.е. запись кода Вашего сам. Если в базе данных Вы могли бы использовать триггер.

0
ответ дан svrist 24 October 2013 в 03:33
поделиться

Добавить ответ на мой собственный вопрос:

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

я говорю от личного опыта. (спасибо pigsback!) Они представили подтверждение по мобильному телефону. Это остановило меня имеющий 2 учетных записи!:-)

1
ответ дан Johannes 24 October 2013 в 03:33
поделиться

Другое возможное решение (принимающий Вас на самом деле нуждаются в надежных адресных сведениях и Вы только используете адреса в качестве способа предотвратить дублирующиеся учетные записи), должен использовать сторонний веб-сервис для стандартизации адресов, обеспеченных пользователями.

Это прокладывает себе путь - Ваша система принимает адрес пользователя через форму онлайн. Ваша форма руки прочь от адреса пользователя к стороннему веб-сервису стандартизации адреса. Веб-сервис дает Вам назад тот же адрес, но теперь с данными, стандартизированными в дискретные поля адреса, и со стандартными сокращениями, и форматирует примененный. Ваши отображения приложения этот стандартизированный адрес Вашему пользователю для их подтверждения прежде, чем попытаться сохранить данные в Вашем DB.

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

Один такой сторонний сервис Интерактивный Сервис Глобального Адреса , который включает Германию в список поддерживаемых стран, и также имеет демонстрацию онлайн, которая демонстрирует, как их сервис работает (демонстрационная ссылка может быть найдена на той веб-странице).

существует невыгодное соотношение издержек к этому подходу, очевидно. Однако зато:

  1. Вы не должны были бы создать и поддержать свои собственные метаданные стандартизации адреса
  2. , Вы не должны будете непрерывно улучшать свои стандартные программы стандартизации адреса, и
  3. Вы свободны сфокусировать свою энергию разработки программного обеспечения на частях приложения, которые уникальны для Ваших требований

Правовая оговорка: Я не работаю на Глобальный Адрес и не попытался использовать их сервис. Я просто упоминаю их как пример, так как у них есть демонстрация онлайн, с которой можно на самом деле играть.

2
ответ дан mdy 24 October 2013 в 03:33
поделиться

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

Это однако не проверка в базе данных, таким образом, она может или не может быть тем, что Вы ищете.

2
ответ дан Jon Limjap 24 October 2013 в 03:33
поделиться

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

Большинство стран имеет стандартный способ отформатировать адреса в США, это - USPS система CASS: http://www.usps.com/ncsc/addressservices/certprograms/cass.htm

, Но большинство других стран имеет подобный сервис/стандарт. Попробуйте этот сайт за большее количество международных форматов: http://bitboost.com/ref/international-address-formats.html

Это не только помогает в нахождении дубликатов, но также и сохраняет Вас деньги при отправке по почте Вам клиентов (почтовая служба заряжается меньше, если адрес находится в стандартном формате).

В зависимости от Вашего приложения, в некоторых случаях Вы могли бы хотеть сохранить запись адреса "тщеславия", а также стандартную запись адреса. Это угождает Вашим клиентам VIP. Адрес "тщеславия" мог бы быть чем-то как: Девяносто первая West Street,

62,
Квартира 4D
Манхэттен, Нью-Йорк, Нью-Йорк 10001

, В то время как стандартный адрес мог бы быть похожим на это:

91-й APT ST на 62 Вт 4D
НЬЮ-ЙОРК NY 10024-1414

2
ответ дан urini 24 October 2013 в 03:33
поделиться

Чем ранее можно остановить людей, тем легче это будет в конечном счете!

Не быть слишком знакомым с Вашей схемой дб или формой ввода данных, я предложил бы маршрут что-то как следующее:

  • имеют отличные поля в Вашем дб для каждого адреса "часть", например, улица, город, индекс, LГ¤nder, и т.д.

  • сломали Вашу форму ввода данных точно так же, например, улицу, город, и т.д.

, обоснование позади вышеупомянутого состоит в том, что каждая часть будет, вероятно, иметь свои собственные конкретные "правила" для проверки немного измененного обращенный, ("Квелленштрассе"-> "Quellenstr"., "66/11"-> "66a-11" выше), таким образом, Ваш код доступа может проверить, существуют ли значения, как представлено для каждого поля в их соответствующем поле дб. В противном случае у Вас может быть класс, который применяет правила преобразования для каждого данного поля (например, "strasse", остановленный к "str"), и проверяет снова на дубликаты.

, Очевидно, вышеупомянутый метод имеет, это - недостатки:

  • это может быть медленно, в зависимости от Вашего набора данных, оставив пользователя, ожидающего

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

, Как только Вы имеете в распоряжении основную проверку, можно посмотреть на оптимизацию требуемых доступов дб, совершенствование правил, и т.д. для соблюдения конкретной схемы. Вы могли бы также смотреть на соответствие MySQL () функция для разработки подобного текста.

6
ответ дан ConroyP 24 October 2013 в 03:33
поделиться

Вы могли использовать Google GeoCode API

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

10
ответ дан Espo 24 October 2013 в 03:33
поделиться
Другие вопросы по тегам:

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