1

我偶然发现了在 Microsoft SQL Server 2012 上可能包含域名的列中的全文搜索问题。

包含的表格单元格由术语和example.com添加到全文目录中。后者使搜索域名成为不可能,因为将找到包含该 tld 的任何条目。examplecom

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

编辑:示例查询将是:

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

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

4

2 回答 2

2

使用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')

于 2013-07-18T15:26:12.823 回答
-2

这个:

SELECT TOP 1000 
[Domain1]
FROM [TESTIT].[dbo].[DomainTest] where Domain1 like '%example%com';
于 2013-07-16T11:59:36.247 回答