0

所以我正在转换现有系统以支持自由文本搜索,我有一个小问题。列 CONTENT 是 nvarchar(max) 的类型并存储 HTML,这意味着像这样的情况

<p><b>f</b>oo</p>

将不起作用,因为不会应用 HTML 过滤器。所以我正在寻找一种解决方案,在该列的 FREETEXT 查询期间手动强制 DB 在该列上使用 HTML 过滤器

SELECT [ID],[content]   
FROM [dbo].[Core_Note]
WHERE FREETEXT([content], 'banana phone noodle foo'); 

因此,此查询将返回除上述匹配项之外的所有匹配项。

当前输出将是:

<p><br></p><p>Banana!<br></p>
Banana Phone

虽然应该/希望是

<p><br></p><p>Banana!<br></p>
Banana Phone
<p><b>f</b>oo</p>
4

1 回答 1

0

最后,没有任何有用的解决方法不会破坏 FreeTextSearch 的目的,因此带有 HTML 过滤器的 VARBINARY 就是答案。

详细信息:解决方案是通过创建触发器来实现的,该触发器将以 Varbinary 的形式将相关的 Freetext 数据传递到 FreeText 表并应用相关的过滤器。

于 2020-05-19T11:53:58.960 回答