【发布时间】:2015-08-15 21:55:35
【问题描述】:
我正在搜索新闻文章表。两个相关的列是ArticleTitle 和ArticleText。当我想在一篇文章中搜索特定术语时,我从
column LIKE '%term%'。
但是,这给了我很多文章,其中包含锚链接中的术语,例如<a href="example.com/*term*>,它可能会返回不相关的文章。
然后我切换到
column LIKE '% term %'。
这个查询的问题是它没有找到标题或文本以该词开头/结尾的文章。它也与我想要的 term- 或 term's 不匹配。
看来我想要的查询应该能够做这样的事情
'%[^a-z]term[^a-z]%
这应该排除锚链接中的术语,但其他所有内容。我认为这个查询仍然排除了以该术语开头/结尾的字符串。有更好的解决方案吗? SQL-Server 的全文索引是否解决了这个问题?
此外,将ArticleTitle 和ArticleText 存储为无HTML 列是否是个好主意?然后我可以使用'%term%' 而不获取锚链接。不过,这些将是 2 个额外的列,因为最终我将需要原始 HTML 进行格式化。
谢谢。
【问题讨论】:
-
是的,这是个好主意,因为您需要查询这些字段
-
使用 % 通配符来搜索文本字段非常慢并且充满了这样的麻烦。创建全文索引并使用CONTAINS() 搜索。
标签: sql sql-server tsql wildcard sql-like