全文搜索和域名

时间:2013-07-16 09:42:05

标签: sql-server sql-server-2012 full-text-search stop-words wordbreaker

我遇到了一个问题,即在包含Microsoft SQL Server 2012上的域名的列中进行全文搜索。

包含example.com的表格单元格将按术语examplecom添加到全文目录中。后者使得无法搜索域名,因为任何包含该域名的条目都将被找到。

为了防止网址被破坏,你需要做什么?

编辑:示例查询将是:

SELECT * FROM Test WHERE FREETEXT(test, 'example.com')

Test表只包含两行,包含example.comdifferenturl.com,两者都作为结果返回。为此示例创建了测试数据库。

2 个答案:

答案 0 :(得分:1)

使用CONTAINS代替FREETEXT

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';