我在SQL Server 2008中有一个全文索引表,我试图使用FULLTEXT查询一个精确的词组匹配。我不相信使用CONTAINS或LIKE适合这一点,因为在其他情况下,查询可能不准确(用户不会用双引号括住短语),并且通常我想要灵活地使用FREETEXT。在SQL Server 2008中的FREETEXT查询不是词组匹配
按照documentation [MSDN用于FREETEXT:
如果的freetext_string被封闭在双引号,短语匹配代替执行;词干和词库不执行。
这将导致我相信这样的查询:
SELECT Description
FROM Projects
WHERE FREETEXT(Description, '"City Hall"')
其中术语“市政厅”出现在描述字段将只返回结果,而是我得到的结果是这样的:
1曼宁厅残疾人坡道设计。
2天线调查。客户:克兰斯顿市工程部
3关于国际网球名人堂火灾损坏的结构调查。
4调查在先驱霍尔建议卫星设计的屋顶调查。
...等
显然,这些结果包括在我的那句话说的至少一个,但不是有句话本身。更糟糕的是,我曾经认为结果会被排名,但我实际需要的两个结果(因为它们包括实际的短语)被埋没了。现有的市政府为Pawtucket的市政厅大楼,由泄漏困扰的美国马萨诸塞州昆西
2走马结构调查
SELECT Description
FROM Projects
WHERE Description LIKE '%City Hall%'
1主要外部和内部装修。
我敢肯定这是我不理解文档的情况,但有没有办法实现我在找的东西?也就是说,为了能够传递不带引号的搜索字符串,并准确地获取我现在得到的或带引号的内容,并只获取该确切短语?
我知道这是旧的,但我遇到了同样的问题,只是发现这个错误报告:[SQL Server 2008 R2中的FREETEXT不再按照“短语搜索”](http://connect.microsoft.com)com/SQLServer/feedback/details/683573/freetext-in-sql-server-2008-r2-no-longer-works-as-documented-for-phrase-searching) – bfavaretto 2012-02-10 21:37:09