Sql server sql server全文搜索奇怪的搜索结果

Sql server sql server全文搜索奇怪的搜索结果,sql-server,sql-server-2008-r2,full-text-search,Sql Server,Sql Server 2008 R2,Full Text Search,我使用WindowsServer2003R2上的SQLServer2008R2作为文章数据库。我有一个字段,上面有那篇文章的名字。以下是一些例子: NYM-J 3X1,5 grau环100米 NYM-O 3X1,5 grau Trommel NYM-O 3X1,5格劳环100米 NYM-J 3X1,5格劳环50米 NYM-J 3X1,5格劳特罗梅尔500米 安装调试NYM-J 3X1,5 当我使用下面的sql命令时 SELECT Name FROM Articles WHERE CONTAI

我使用WindowsServer2003R2上的SQLServer2008R2作为文章数据库。我有一个字段,上面有那篇文章的名字。以下是一些例子:

  • NYM-J 3X1,5 grau环100米
  • NYM-O 3X1,5 grau Trommel
  • NYM-O 3X1,5格劳环100米
  • NYM-J 3X1,5格劳环50米
  • NYM-J 3X1,5格劳特罗梅尔500米
  • 安装调试NYM-J 3X1,5
当我使用下面的sql命令时

SELECT Name FROM Articles WHERE CONTAINS(Name, '"NYM-J 3X1,5"');
我希望只返回带有NYM-J3X1,5的文章,但返回上面所有带有NYM-O的文章。那么我做错了什么

谢谢

您可以使用解析这两个字符串:

select * from sys.dm_fts_parser('"NYM-J 3X1,5"', 1033, 0, 0)
select * from sys.dm_fts_parser('"NYM-O 3X1,5"', 1033, 0, 0)
解释结果有点尴尬,因为文档没有涵盖所有细节(例如,
phrase\u id
为零意味着什么?)。但我最清楚的理解是FTS解析器已将“nym”识别为匹配项,“nymo”和“nymj”都被视为“nym”的替代形式(因为它们具有相同的
组id
,但具有不同的
短语id
)。因此,两个搜索词是相同的,因为FTS认为“nym”、“nymj”和“nymo”在全文搜索中是等效的

因为关于FTS解析器的文档很少,所以很难说解决方案是什么,尽管最明显的是,因为您需要精确的匹配,所以可以像一样使用
。全文搜索实际上是为了使用单词和短语搜索自然语言文本,它不是一个通用的文本解析器