SQL::如何查找搜索字符串中最常见的记录(标记字段)
我们有tbl_文章:SQL::如何查找搜索字符串中最常见的记录(标记字段),sql,sql-server,sql-server-2008,tsql,Sql,Sql Server,Sql Server 2008,Tsql,我们有tbl_文章: id title tags ================================= 1 article1 science; 2 article2 art; 3 article3 sports;art; 我正在寻找一个查询,以返回来自tbl_文章的记录,这些文章包含最常用的单词,并带有特定的标记字符串(例如:政治;艺术;): 例:选择标签在“政治;艺术;中有共同点的地方(tbl_文章中的内容) 结果:
id title tags
=================================
1 article1 science;
2 article2 art;
3 article3 sports;art;
我正在寻找一个查询,以返回来自tbl_文章的记录,这些文章包含最常用的单词,并带有特定的标记字符串(例如:政治;艺术;):
例:选择标签在“政治;艺术;中有共同点的地方(tbl_文章中的内容)
结果:
tbl_文章
id title tags
=================================
2 article2 art;
3 article3 sports;art;
你在找这个吗
select a.*
from articles a
where ';'+tags+';' like '%;politics;%' and
';'+tags+';' like '%;art;%'
请注意,我在开头和结尾使用分隔符,这样您就可以将“art”和“smart”作为标记。您在找这个吗
select a.*
from articles a
where ';'+tags+';' like '%;politics;%' and
';'+tags+';' like '%;art;%'
请注意,我在开头和结尾使用了分隔符,因此您可以将“art”和“smart”作为标记。您可以使用类似谓词的
来完成此任务,但请注意,它仅适用于字符模式
我想你在找。自由文本
不仅返回准确的措辞,还返回附加到它的最接近的含义
有关以下类型的详细信息,
自由文本
FREETEXTTABLE
包含
集装箱
在查询大量非结构化文本数据时,可以最好地实现使用全文搜索的性能优势。类似于
的查询(例如,“%microsoft%”)针对数百万行文本数据的查询可能需要几分钟才能返回;而全文
查询(针对“microsoft”)只需几秒钟或更短的时间即可查询相同的数据,具体取决于返回的行数 您可以使用类似谓词的来完成此任务,但请注意,它仅适用于字符模式
我想你在找。自由文本
不仅返回准确的措辞,还返回附加到它的最接近的含义
有关以下类型的详细信息,
自由文本
FREETEXTTABLE
包含
集装箱
在查询大量非结构化文本数据时,可以最好地实现使用全文搜索的性能优势。类似于
的查询(例如,“%microsoft%”)针对数百万行文本数据的查询可能需要几分钟才能返回;而全文
查询(针对“microsoft”)只需几秒钟或更短的时间即可查询相同的数据,具体取决于返回的行数你应该考虑建立你的标签系统的关系。在标记表和项目表之间使用联接表。这看起来是错误地构建的,无法以高效的方式执行您想要执行的查询。通常,对于任何数据库,您都希望避免进行部分字符串匹配来查找记录,如果一行有属性,并且可能有许多属性,则应以关系方式存储它们,而不是将其展平。有没有回答您的查询?或者你需要更多的帮助?你应该考虑建立你的标签系统的关系。在标记表和项目表之间使用联接表。这看起来是错误地构建的,无法以高效的方式执行您想要执行的查询。通常,对于任何数据库,您都希望避免进行部分字符串匹配来查找记录,如果一行有属性,并且可能有许多属性,则应以关系方式存储它们,而不是将其展平。有没有回答您的查询?或者您需要更多帮助?+1我实际上在这里介绍了这种方法-这是一种内联LIKE
执行CLR和所有其他方法的情况。@AaronBertrand这很有趣。谢谢你的指点。+1我实际上在这里介绍了这种方法-这是一种内联LIKE
执行CLR和所有其他方法的情况。@AaronBertrand这很有趣。谢谢你的指点。