因此,我使用的是SQL全文搜索,根据我的阅读,CONTAINS返回单词附近的匹配项,而FREETEXT返回具有相似含义的单词,但是我找不到任何可验证其含义的示例。

无论如何,到目前为止,我正在具有描述字段(最大长度为2500个字符)的表上使用全文搜索,并希望对此使用FTS。该描述将包含诸如食物成分之类的东西,最好使用哪种,CONTAINS或FREETEXT?我希望我的用户搜索的是这样的:

“蛋糕糖的食谱”

并且它应该返回排名最高的结果,对于此,FREETEXT或CONTAIN而言,最好的是什么?

最佳答案

我认为FREETEXT是您想要的。

这是两个选项的很好比较:

http://www.sitepoint.com/blogs/2006/12/06/sql-server-full-text-search-protips-part-2-contains-vs-freetext/

如果使用CONTAINS,则WHERE变得很复杂,因此您无法直接传递用户在搜索表单中输入的内容:

包含何处(注释,“ FORMSOF(INFLECTIONAL,食谱)或FORMSOF(INFLECTIONAL,美食)”)


但是,如果您使用FREETEXT,则可以直接在以下位置指定“搜索表单”:

自由文本(注释,“蛋糕糖配方”)


我想说,如果您想在程序构造查询的地方搜索内容,CONTAINS很有用,因为它功能更强大,而且您拥有更多的控制权。另一方面,当您要执行“ google style”查询时,FREETEXT很有用,该查询是用户以简单的语法(只是单词)指定要搜索的内容。

10-08 12:03