我有一个在SQL Server 2008中全文索引的表格,我试图使用FULLTEXT查询确切的短语匹配。 我认为使用CONTAINS或LIKE不合适,因为在其他情况下查询可能不是精确的(用户没有用双引号包围短语),而且一般我想要FREETEXT的灵活性。
根据FREETEXT的文档[MSDN]所述:
如果freetext_string用双引号括起来,则执行短语匹配;不执行词干分析和同义词。
这会让我相信像这样的查询:
我希望的结果是只返回“市政厅”一词出现在描述字段中的结果,但实际上结果如下所示:
1. Manning Hall无障碍坡道设计。 2. 天线调查。客户:克兰斯顿市工程部。 3. 国际网球名人堂火灾损坏的结构调查。 4. Herald Hall卫星设计建议的屋顶调查。 ......等等。
显然,这些结果至少包含我短语中的一个单词,但不包括短语本身。更糟糕的是,我原以为结果会排名,但我真正想要的两个结果(因为它们包含实际短语)被埋没了。
根据FREETEXT的文档[MSDN]所述:
如果freetext_string用双引号括起来,则执行短语匹配;不执行词干分析和同义词。
这会让我相信像这样的查询:
SELECT Description
FROM Projects
WHERE FREETEXT(Description, '"City Hall"')
我希望的结果是只返回“市政厅”一词出现在描述字段中的结果,但实际上结果如下所示:
1. Manning Hall无障碍坡道设计。 2. 天线调查。客户:克兰斯顿市工程部。 3. 国际网球名人堂火灾损坏的结构调查。 4. Herald Hall卫星设计建议的屋顶调查。 ......等等。
显然,这些结果至少包含我短语中的一个单词,但不包括短语本身。更糟糕的是,我原以为结果会排名,但我真正想要的两个结果(因为它们包含实际短语)被埋没了。
SELECT Description
FROM Projects
WHERE Description LIKE '%City Hall%'
1 对马萨诸塞州昆西市政厅进行重大的外部和内部翻新。
2 对受泄漏困扰的波塔基特市政厅塔楼进行简要结构调查。
我相信这是我没有理解文档的原因,但是否有一种方法可以实现我想要的功能?也就是说,能够传递一个没有引号的搜索字符串,并获得与现在完全相同的结果或者使用引号并仅获取确切的短语?