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