sql-server – SQL Server全文检索逃脱字符?

前端之家收集整理的这篇文章主要介绍了sql-server – SQL Server全文检索逃脱字符?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在做一个MS sql Server全文搜索查询.我需要转义特殊字符,所以我可以搜索包含特殊字符的特定术语.是否有内置函数来转义全文搜索字符串?如果没有,你会怎么做?

解决方法

坏消息:没办法好消息:你不需要它(因为它不会帮助).

我在我的一个项目中遇到了类似的问题.我的理解是,在构建全文索引时,sql Server将所有特殊字符视为分词符,因此:

>具有这样一个字符的单词在全文索引中表示为两个(或多个)单词.
>这些字符被剥离,不会出现在索引中.

考虑我们有一个相应的全文索引(被跳过)的下表:

CREATE TABLE [dbo].[ActicleTable] 
(
  [Id] int identity(1,1) not null primary key,[ActicleBody] varchar(max) not null
);

稍后再考虑,我们在表中添加行:

INSERT INTO [ActicleTable] values ('digitally improvements folders')
INSERT INTO [ActicleTable] values ('digital"ly improve{ments} fold(ers)')

尝试搜索

SELECT * FROM [ArticleTable] WHERE CONTAINS(*,'digitally')
SELECT * FROM [ArticleTable] WHERE CONTAINS(*,'improvements')
SELECT * FROM [ArticleTable] WHERE CONTAINS(*,'folders')

SELECT * FROM [ArticleTable] WHERE CONTAINS(*,'digital')
SELECT * FROM [ArticleTable] WHERE CONTAINS(*,'improve')
SELECT * FROM [ArticleTable] WHERE CONTAINS(*,'fold')

第一组条件将匹配第一行(而不是第二组),而第二组只匹配第二行.

不幸的是,我找不到指向MSDN(或某些东西)的链接,这样的行为是明确的.但是我发现了一个official article,它告诉如何将全文搜索查询的引号转换成与上述算法对齐的方式.

猜你在找的MsSQL相关文章