gpt4 book ai didi

sql - SQL Server 2008 中的 FREETEXT 查询不是短语匹配

转载 作者:行者123 更新时间:2023-12-05 00:15:19 28 4
gpt4 key购买 nike

我在 SQL Server 2008 中有一个全文索引表,我试图使用 FULLTEXT 查询精确的短语匹配。我不相信使用 CONTAINS 或 LIKE 对此是合适的,因为在其他情况下查询可能不准确(用户没有用双引号将短语括起来),并且通常我想要灵活的 FREETEXT。

根据documentation [MSDN] 自由文本:

If freetext_string is enclosed in double quotation marks, a phrase match is instead performed; stemming and thesaurus are not performed.



这会让我相信这样的查询:
SELECT Description  
FROM Projects
WHERE FREETEXT(Description, '"City Hall"')

只会返回描述字段中出现“市政厅”一词的结果,但我得到的结果如下:

1 Design of handicap ramp at Manning Hall.
2 Antenna investigation. Client: City of Cranston Engineering Dept.
3 Structural investigation regarding fire damage to International Tennis Hall of Fame.
4 Investigation Roof investigation for proposed satellite design on Herald Hall.
... etc



显然,这些结果至少包括我的短语中的一个词,但不包括短语本身。更糟糕的是,我原以为结果会被排名,但我真正想要的两个结果(因为它们包含了实际的短语)被埋没了。
SELECT Description  
FROM Projects
WHERE Description LIKE '%City Hall%'

1 Major exterior and interior renovation of the existing city hall for Quincy Massachusetts
2 Cursory structural investigation of Pawtucket City Hall tower plagued by leaks.



我确定这是我不理解文档的情况,但是有没有办法实现我正在寻找的东西?即,能够传递不带引号的搜索字符串并准确获取我现在得到的内容或带引号的内容并仅获取该确切短语?

最佳答案

正如你所说,FREETEXT查找短语中的每个单词,而不是将短语作为全部。为此,您需要使用 CONTAINS陈述。像这样:

SELECT Description  
FROM Projects
WHERE CONTAINS(Description, '"City Hall"')

如果你想得到结果的排名,你必须使用 CONTAINSTABLE .它的工作原理大致相同,但它返回一个包含两列的表:[Key] 包含搜索表的主键和 [Rank],它为您提供结果的排名。

关于sql - SQL Server 2008 中的 FREETEXT 查询不是短语匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4462875/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com