У меня есть две таблицы:
Ключевые слова
, где я храню уникальные ключевые слова.
CREATE TABLE [dbo].[Keywords]
[KeywordID] [int] IDENTITY(1,1) NOT NULL,
[Description] [varchar](200) NOT NULL
select * from Keywords
1 MVC
2 HTML
3 C#
4 ASP.NET MVC
5 MVC3
KeywordSynonymous
, где я указываю, что некоторые ключевые слова являются синонимами других.
CREATE TABLE [dbo].[KeywordSynonymous]
[KeywordID] [int] NOT NULL,
[KeywordSynonymousID] [int] NOT NULL
Оба поля являются FK для таблицы Ключевые слова, и оба комбинированных поля используются в качестве PK в этой таблице.
Здесь я хотел бы заявить, что «MVC» и «MVC3» являются синонимами и, возможно, «MVC3» и «ASP.NET MVC» также являются синонимами.
select * from KeywordSynonymous
1 5
5 4
КОНЦЕПЦИИ
1)
Если ключевое слово «MVC» является синонимом «MVC3»
, а «MVC3» является синонимом«ASP.NET MVC»
, тогда концептуально MVC является ТАКЖЕ синонимом «ASP.NET MVC»
2)
Если ключевое слово 'MVC' является синонимом 'MVC3'
, то это также верно VICEVERSA и что MVC3 является синонимом'MVC'
ВОПРОС
Представьте, что на моем веб-сайте выполняется поиск, и пользователь может вводить что угодно, но для нашего примера онмог бы набрать 'MVC' или 'MVC3' ...
Как я могу получить с одним оператором SQL ВСЕ возможное синоним, гарантирующее, что оба понятия 1 и 2 выполнены?
Это означает, что:
>> if the user types 'MVC', my sql should return 'MVC, MVC3', 'ASP.NET MVC'.
>> if the user types 'MVC3', my sql should return 'MVC, MVC3', 'ASP.NET MVC'.
>> if the user types 'ASP.NETMVC', my sql should return 'MVC, MVC3', 'ASP.NET MVC'.
===============================================================
ОБНОВЛЕНИЕ
Я чувствую, что должен добавить немного осайт, который я разрабатываю.Это рынок, где молодые специалисты смогут продавать свои услуги, используя новые способы продвижения.
Поскольку мы хотим разрешить любую профессию, я не могу сейчас предвидеть, какие «ключевые слова» будут определять каждую профессию лучше.Поэтому я позволю пользователям определять эти ключевые слова.
Моя проблема в том, что мне нужно разрешить UserX искать этих молодых специалистов по профессии и ключевым словам.Мне нужно разрешить этим пользователям сопоставлять их ключевые слова с существующими, чтобы текущие и будущие поиски автоматически соответствовали нужным профилям.
Вот почему у меня нет всех ключевых слов заранее и, конечно, я не могу определить будущееключевые слова и их соответствующие синонимы.Я также не могу ожидать, что пользователи будут сопоставлять ВСЕ существующие ключевые слова со всеми релевантными ... поэтому я должен работать над Концепцией 1.
=====================================================================
STACKOVERFLOW TAGS
Модуль ключевого слова должен работать очень похоже на теги StackOverflow(Ключевые слова), где, если я установлю TAGS на SQL, вы, ребята, которые ищете TSQL или SQL SERVER ... также должны увидеть этот пост.
:-)