【发布时间】:2011-01-10 11:55:33
【问题描述】:
我有一个带有简单搜索文本框的 asp.net 网页,它从 MSSQL 2005 数据库返回匹配的行。它目前正在使用 LIKE 语句来返回匹配项,但会强制用户输入准确的短语。用户想要更多 Google 搜索类型的体验,因此我决定使用 FTS 设置和索引所需的表。
我希望用户搜索要在 CONTAINS 搜索中使用的一个或多个单词,用 NEAR 分隔他们在文本框中键入的每个单词。我是一名新开发人员,不知道该怎么做,或者是否已经有一个内置函数可以解决这个问题。
因此,例如,如果用户在搜索框中键入“Sawyer Tom”,则查询应如下所示:
选择 BookID、书名 来自 tblBooks WHERE CONTAINS(书名,'Sawyer NEAR Tom')
然后返回:
12032 汤姆索亚历险记
目前使用我现在拥有的like 语句,用户搜索将找不到匹配项。
如果用户只键入 Sawyer,则查询应该像这样简单地运行:
选择 BookID、书名 来自 tblBooks WHERE CONTAINS(书名,'Sawyer')
返回:
12032 汤姆索亚历险记 72192 Roy Crane 的 Buz Sawyer:太平洋战争(第 1 卷)
我当前的代码只是将搜索字符串插入到查询中,如下所示:
选择 BookID、书名 来自 tblBooks 哪里包含(书名,@Search)
这显然行不通。如何使用 NEAR 自动分隔每个单词?
非常感谢您提供的任何帮助!
-大卫
【问题讨论】:
标签: sql contains full-text-search