我遇到了一个问题,即在包含Microsoft SQL Server 2012上的域名的列中进行全文搜索。
包含example.com
的表格单元格将按术语example
和com
添加到全文目录中。后者使得无法搜索域名,因为任何包含该域名的条目都将被找到。
为了防止网址被破坏,你需要做什么?
编辑:示例查询将是:
SELECT * FROM Test WHERE FREETEXT(test, 'example.com')
Test表只包含两行,包含example.com
和differenturl.com
,两者都作为结果返回。为此示例创建了测试数据库。
答案 0 :(得分:1)
SELECT * FROM Test WHERE CONTAINS(test, 'example.com')
FREETEXT会将example.com
视为example OR com
,这解释了为什么您对example.com的FREETEXT查询与url.com匹配的原因。它还将匹配屈折形式(例子,例子......)和同义词,这可能会给你带来其他问题。
如果您仍然需要FREETEXT的灵活性用于其他搜索字词,则可以使用这两种功能:
SELECT * FROM Test WHERE CONTAINS(test, 'example.com') and FREETEXT(test, 'some other text')
答案 1 :(得分:0)
这:
SELECT TOP 1000
[Domain1]
FROM [TESTIT].[dbo].[DomainTest] where Domain1 like '%example%com';