【问题标题】:SQL Server 2008 full-text search doesn't find word in words?SQL Server 2008 全文搜索找不到单词中的单词?
【发布时间】:2010-03-12 11:17:53
【问题描述】:

在数据库中,我有一个带有 .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)

【问题讨论】:

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


    【解决方案1】:

    我建议您考虑使用 CONTAINS 谓词,而不是 FREETEXT

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

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

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

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

    【讨论】:

    • SQL Server 不支持搜索词前的星号。
    猜你喜欢
    • 2011-02-27
    • 1970-01-01
    • 2011-02-17
    • 2013-05-29
    • 2013-02-19
    • 1970-01-01
    • 1970-01-01
    • 2014-10-06
    • 1970-01-01
    相关资源
    最近更新 更多