首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Server 2008中的FREETEXT查询不匹配短语

Server 2008中的FREETEXT查询不匹配短语
EN

Stack Overflow用户
提问于 2010-12-16 16:18:39
回答 1查看 10.9K关注 0票数 4

我在Server 2008中有一个全文索引表,我试图使用全文查询一个确切的短语匹配。我不认为使用doesn或LIKE是合适的,因为在其他情况下,查询可能不准确(用户不使用双引号括起来短语),而且总的来说,我希望FREETEXT具有灵活性。

根据FREETEXT的文档MSDN:

如果freetext_string用双引号括起来,则执行短语匹配;词干和词库不执行。

这会让我相信这样的查询:

代码语言:javascript
复制
SELECT Description  
FROM Projects   
WHERE FREETEXT(Description, '"City Hall"')  

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

1曼宁大厅残疾人坡道设计。 2天线调查。客户:克兰斯顿市工程部。 3国际网球名人堂火灾损害结构调查。 4前哨大厅卫星设计调查屋顶调查。 ..。等

显然,这些结果至少包括我短语中的一个词,而不是短语本身。更糟糕的是,我原以为结果会被排名,但我真正想要的两个结果(因为它们包含了实际的短语)被掩埋了。

代码语言:javascript
复制
SELECT Description  
FROM Projects  
WHERE Description LIKE '%City Hall%'  

对马萨诸塞州昆西现有市政厅进行主要的外部和内部翻修 2 Pawtucket市政厅塔楼漏水的粗略结构调查。

我确信这是我不了解文档的情况,但是有什么方法可以实现我想要的吗?也就是说,能够在没有引号的情况下传递一个搜索字符串,得到我现在所得到的,或者引用,只得到确切的短语?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-12-16 16:33:59

正如您所说的,FREETEXT查找您短语中的每个单词,而不是作为一个全部。为此,您需要使用CONTAINS语句。如下所示:

代码语言:javascript
复制
SELECT Description  
FROM Projects   
WHERE CONTAINS(Description, '"City Hall"')

如果你想得到结果的排名,你必须使用CONTAINSTABLE。它的工作原理大致相同,但它返回一个有两列的表: Key wich包含搜索表的主键和Rank,这给出了结果的排序。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4462875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档