SQL Server 2008全文搜索在单词中找不到单词?

时间:2010-03-12 11:17:54

标签: sql sql-server full-text-search

在数据库中,我有一个带有.mht文件的字段。我想使用FTS搜索本文档。我有这个工作,但我对结果不满意。例如(抱歉,这是荷兰语,但我认为你明白我的意思)我会用2个词:zieken和ziekenhuis。正如你所看到的,“zieken”这个词在'ziekenhuis'一词中。

当我搜索'ziekenhuis'时,我得到了大约20个结果。当我搜索'zieken'时,我得到7个结果。这怎么可能?我的意思是,为什么FTS没有恢复我从'ziekenhuis'得到的最小结果?

这是我使用的查询:

SELECT DISTINCT
    d.DocID 'Id', 
    d.Titel,
    (SELECT afbeeldinglokatie FROM tbl_Afbeelding WHERE soort = 'beleid') as Pic, 
    'belDoc' as DocType 
FROM docs d
JOIN kpl_Document_Lokatie dl ON d.DocID = dl.DocID
JOIN HandboekLokaties hb ON dl.LokatieID = hb.LokatieID
WHERE hb.InstellingID = @instellingId
    AND (
          FREETEXT(d.Doel, @searchstring)
          OR FREETEXT(d.Toepassingsgebied, @searchstring)
          OR FREETEXT(d.HtmlDocument, @searchstring)
          OR FREETEXT (d.extraTabblad, @searchstring)
          )
    AND d.StatusID NOT IN( 1, 5)

1 个答案:

答案 0 :(得分:1)

我建议您查看使用CONTAINS谓词,而不是FREETEXT

使用场景,包括您希望实现的目标,可以在文档的示例部分找到。

根据您的描述,我相信您正在尝试执行“前缀”搜索。例如:

USE AdventureWorks;
GO
SELECT Name
FROM Production.Product
WHERE CONTAINS(Name, ' "SearchTerm*" ');
GO

这将为您提供一个结果集,其中包含“包含”前缀搜索词的所有单词。