我正在搜索新闻报道表。2个相关的列是ArticleTitle
和ArticleText
。当我想在文章中搜索特定术语时,我从
column LIKE '%term%'
。
但是,这给了我很多文章,例如带有锚链接中的术语,<a href="example.com/*term*>
这可能会返回不相关的文章。
所以我切换到
column LIKE '% term %'
。
该查询的问题是找不到标题或文字以该词开头/结尾的文章。另外,它与我想要的类似term-
或的东西也不匹配term's
。
看来我想要的查询应该能够执行这样的操作
'%[^a-z]term[^a-z]%
这应排除锚链接中的术语,但不包括其他所有术语。我认为此查询仍排除以该词开头/结尾的字符串。有更好的解决方案吗?SQL Server的FULL TEXT INDEXING是否可以解决此问题?
此外,这将是一个好主意,商店ArticleTitle
和ArticleText
免费的HTML列?然后,我可以使用'%term%'
而无需获取锚链接。但是,这些将是2个额外的列,因为最终我将需要原始HTML来进行格式化。
谢谢。
SQL ServerLIKE
允许您按照您的描述来定义类似Regex的模式。
更好的选择是使用全文搜索:
WHERE CONTAINS(ArticleTitle, 'term')
正确利用索引(LIKE '%term%'
查询速度很慢),并在搜索算法中提供其他好处。
此外,您可能会受益于将文章的纯文本版本与HTML版本一起存储,并在其上运行搜索查询。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句