在 MS SQL 服务器中执行全文搜索时忽略换行符

Ignore newline characters when performing a fulltext search in MS SQL Server

我有一个 table,其中一列有全文索引。此列中的文本可以包含换行符“\r\n”,例如

line1\r\nline2

目前我正在使用以下SQL搜索

SELECT * FROM SomeTable WHERE CONTAINS(TextValue, '"*line1*"')

匹配成功。但是,我的用户希望能够输入

"line1 line2"

作为搜索词也应该成功匹配。换句话说,我希望搜索忽略“\r”和“\n”。

我试过了

SELECT * FROM civ.MetadataFieldValues WHERE CONTAINS(REPLACE(REPLACE(TextValue, CHAR(13), ' '), CHAR(10), ''), '"*line1 line2*"')

但是这个returns错误

Incorrect syntax near '('.

有没有办法使用 CONTAINS 实现此目的?

CONTAINS 使用全文索引。因此,如果您在搜索之前用函数修改字段内容,那么全文索引的优势将被取消。

可以在视图上创建全文索引。因此,我建议创建一个包含第二个字段的视图,该字段包含与当前搜索字段完全相同的内容,只是您会将任何不需要的特殊字符替换为空格或其他无害的内容。然后,您可以在视图中的新字段上创建全文索引,并在视图中的该字段上使用 CONTAINS。