Sql server 使用FreeText进行全文搜索,但只返回包含表达式中所有单词(stopword列表中的单词除外)的记录

Sql server 使用FreeText进行全文搜索,但只返回包含表达式中所有单词(stopword列表中的单词除外)的记录,sql-server,full-text-search,Sql Server,Full Text Search,我已经寻找了一段时间的解决方案。无论如何,我想不出一种方法来返回我想要的记录集 我有一个充满不同文本的表格,作为HMI软件中使用的所有文本的集合。 现在,当用户创建新文本时,我想检查表中是否已经存在类似的文本 到目前为止,我发现MS SQL Server上的FullTextSearch应该是最好的方法。我的问题如下: 当我在一个应该检查相似值的新文本上使用FreeText时,我得到了很多结果。列出的每个记录在我的搜索字符串中甚至只包含一个相关单词 示例: 搜索文本: 直线电机减速至顶部 应找

我已经寻找了一段时间的解决方案。无论如何,我想不出一种方法来返回我想要的记录集

我有一个充满不同文本的表格,作为HMI软件中使用的所有文本的集合。 现在,当用户创建新文本时,我想检查表中是否已经存在类似的文本

到目前为止,我发现MS SQL Server上的FullTextSearch应该是最好的方法。我的问题如下: 当我在一个应该检查相似值的新文本上使用FreeText时,我得到了很多结果。列出的每个记录在我的搜索字符串中甚至只包含一个相关单词

示例:

搜索文本:

  • 直线电机减速至顶部
应找到的值:

  • “减速直线电机传动顶部”
  • “减速直线电机移交至顶部”
不应找到的值:

  • “加速直线电机移交至top”
  • “直线电机移交至顶部”

因此,我希望它能像FreeText一样工作(使用屈折变化和同义词库比较),但只包含搜索字符串中所有单词的记录,除了那些在停止词列表中的单词(因此填充词也被忽略)

我考虑对搜索字符串中的每个单词使用ContainsFormsof。但是,它不会忽略停止词列表上的那些词

我希望我能够正确地说明我的问题,并希望有人能帮助我解决这个问题


提前感谢。

感谢任何可能遇到这种问题的人。现在我自己用大锤法解决了这个问题。 我只是在搜索表达式中用

(Formsof(... Thesaurus, *Word1* ) OR Formsof(... INFLECTIONAL *Word1*)) AND  
(Formsof(... Thesaurus, *Word2* ) OR Formsof(... INFLECTIONAL *Word2*))
对于stopwords,在将其添加到我的where字符串之前,通过检查每个单词是否已列出来手动跳过这些单词。 本文帮助我为代码中选定的列获取正确的语言id