Сопоставление шаблонов сайтов - PullRequest
0 голосов
/ 23 июля 2011

Я поддерживаю глобальное хранилище сайтов в таблице.

website:
id, name,  url 
1   google http://www.google.com/
2   CNN    http://www.cnn.com/
3   SO     http://www.stackoverflow.com/

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

userwebsite
userid, websiteid
[attributes of the table]

Скажитепользователь заинтересован сохранить Microsoft;в свою коллекцию он вводит

www.microsoft.com

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

website:
id, name,  url 
1   google http://www.google.com/
2   CNN    http://www.cnn.com/
3   SO     http://www.stackoverflow.com/
4   msft   http://www.microsoft.com

userwebsite:
userid, websiteid
1       4

Скажем, пользователь заинтересован в сохранении Google в своей коллекции, и он вводит

www.google.com

Поскольку веб-сайт ужеСуществующий в коллекции, вместо добавления веб-сайта в коллекцию, в коллекцию пользователей добавляется только ссылка.

Место, где я застрял,

Оба www.google.com и http://www.google.com/

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

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

Существует ли существенное решение этой проблемы?Есть ли лучшие методы, чтобы пойти?

1 Ответ

1 голос
/ 23 июля 2011

В этом случае вам не нужно сопоставление с образцом. То, что вы действительно запрашиваете (продолжая то, что прокомментировал Маттео), - это способ проверки веб-адресов и их последовательного хранения.Но если вы хотите, чтобы регулярное выражение хотя бы определяло, является ли адрес действительным, вы можете посмотреть здесь: http://www.shauninman.com/archive/2006/05/08/validating_domain_names

Или используйте Javascript для проверки его , хотя вы не говоритекакой язык вы используете за пределами SQL-сервера.

Это почти тот случай, когда вам нужно отправить доменное имя на сервер доменных имен, чтобы разрешить его перед сохранением в таблице.Может быть, лучше игнорировать тот факт, что они являются веб-адресами, и просто воспринимать их как строки.Например, как бы вы обеспечили правильное сравнение имен людей в базе данных?Первый шаг обычно заключается в том, чтобы убедиться, что используется верхний или нижний регистр;с тех пор это становится более трудным, например, обработка отчеств / инициалов, которые могут быть опущены.

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