2010-03-12 87 views
1

在数据库中我有一个.mht文件的字段。我想用FTS来搜索这个文件。我得到了这个工作,但我对结果不满意。例如(对不起,这是在荷兰,但我认为你明白我的意思)我会用2个字:zieken和ziekenhuis。正如你所看到的那样,“zieken”这个词在“ziekenhuis”这个词中。SQL Server 2008全文搜索没有找到单词?

当我搜索'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

我建议你看一下使用CONTAINS谓词,而不是FREETEXT

使用方案,包括你想实现什么,都可以找到在文档的示例部分。

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

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

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

+0

SQL Server不支持搜索项之前的星号。 – Qsebas 2014-01-08 14:00:55