提问人:DasMonopol 提问时间:11/6/2023 更新时间:11/6/2023 访问量:20
使用 containstable 的 SQL 全文搜索返回 false 匹配
SQL fulltext search using containstable returns false match
问:
我现在面临的问题是 SQL 中的全文搜索不会产生我期望的结果。containstable 方法返回的结果根本不包含提供的搜索词,我想知道为什么会这样。
我正在搜索的术语是“tubus”,它作为“tubus%”输入到查询中,如下所示:
SELECT
k.[Rank],
si.Term
FROM CONTAINSTABLE(SearchIndex, Term, N'tubus%', LANGUAGE 1031) AS k
JOIN dbo.SearchIndex si ON k.[Key] = si.Id
LEFT JOIN dbo.Item i ON si.EntityId = i.Id AND si.EntityName = 'Item'
WHERE EntityName = 'Item'
SearchIndex 表只是一个包含名为 Term 的列的表,该列是指定实体的全文搜索中应包含的所有单词的组合字符串。 执行上述查询将产生以下结果:
排 | 术语 |
---|---|
208 | CO2-Schlauch mit Tubus-Adapter (für Respironics 3473ADU-00) MA18566 WDT 26332 |
208 | Cuffill 气管管管Druckmesser LL MA17297 WDT 26271 |
208 | d-grip Tubus-/Narkoseschlauchhalter MA15253 WDT 92904 |
208 | iM3 Tubus-Fixierbänder aus Silikon, 50 Stück MA15389 WDT 28338 |
208 | Kruuse Tracheotomie Tubus für Pferde MA8825 WDT 94585 |
我已将表中的错误结果标记为粗体,正如您所看到的,“tubus”一词根本没有出现在术语中。
到目前为止,我唯一尝试过的是使用正确的语言,就我而言是 LCID 1031 德语,但这根本没有改变结果。 我也广泛地环顾四周,但到目前为止,我发现的问题或答案都与我的具体问题无关。
我现在唯一的猜测是,我可能误解了使用 containstable 方法在 SQL 中进行全文搜索的行为,并且结果有时以某种方式“不准确”。 我只是SQL的初学者,所以请耐心等待,但如果有人知道为什么会发生前面描述的行为,请告诉我!我也很想知道这种行为是否符合预期以及为什么会这样。
答: 暂无答案
评论
%
在全文搜索中不能用作通配符,也许您的意思是前缀搜索注意额外的双引号。另请参阅 learn.microsoft.com/en-us/sql/relational-databases/...N'"tubus*"'