我的任务是在一个新应用程序上创建一个“google-esque”搜索机制,并且我在存储过程中遇到了一些困难,该存储过程旨在在 SQL Server 数据库中运行实际搜索。
本质上,该过程是在从用户输入中获取的字符串中传递的,然后使用以下替换将其解析为包含语句。
SELECT @SearchString = '"'+ REPLACE(REPLACE(@SearchKeyword,'"',''), ' ', '" AND "') +'"'
除非 @SearchKeyword 变量包含停用词,否则这非常有效,此时,将其作为链接 AND 语句的一部分包含会导致找不到结果的错误。
(例如,使用“Something Somewhere”搜索用户会返回正确的结果集,但Something of Somewhere 由于未包含在全文索引目录中而不会返回任何内容)。
我知道我可以采用 nuke-from-orbit 方法从停止列表中删除所有条目,但理想情况下,我想简单地修改原始替换以不链接到停止列表中包含的和语句单词。
不幸的是,这把我带到了我知识的边缘,我找不到从哪里提取这些信息以便将其用于替换的目的。
我是否走在正确的轨道上,或者删除停止列表(虽然很混乱)是最好的解决方案?