dri*_*iis 18 sql-server full-text-search
我正在进行MS SQL Server全文搜索查询.我需要转义特殊字符,以便我可以搜索包含特殊字符的特定术语.是否有内置函数来转义全文搜索字符串?如果没有,你会怎么做?
Ale*_*exS 27
坏消息:没有办法.好消息:你不需要它(因为它无论如何也无济于事).
我在其中一个项目中遇到过类似的问题.我的理解是,在构建全文索引时,SQL Server将所有特殊字符视为字分隔符,因此:
考虑我们有下面的表及其相应的全文索引(跳过):
CREATE TABLE [dbo].[ActicleTable]
(
[Id] int identity(1,1) not null primary key,
[ActicleBody] varchar(max) not null
);
Run Code Online (Sandbox Code Playgroud)
稍后我们考虑向表中添加行:
INSERT INTO [ActicleTable] values ('digitally improvements folders')
INSERT INTO [ActicleTable] values ('digital"ly improve{ments} fold(ers)')
Run Code Online (Sandbox Code Playgroud)
尝试搜索:
SELECT * FROM [ArticleTable] WHERE CONTAINS(*, 'digitally')
SELECT * FROM [ArticleTable] WHERE CONTAINS(*, 'improvements')
SELECT * FROM [ArticleTable] WHERE CONTAINS(*, 'folders')
Run Code Online (Sandbox Code Playgroud)
和
SELECT * FROM [ArticleTable] WHERE CONTAINS(*, 'digital')
SELECT * FROM [ArticleTable] WHERE CONTAINS(*, 'improve')
SELECT * FROM [ArticleTable] WHERE CONTAINS(*, 'fold')
Run Code Online (Sandbox Code Playgroud)
第一组条件将匹配第一行(而不是第二行),而第二组仅匹配第二行.
不幸的是,我无法找到MSDN(或其他)的链接,其中明确说明了这种行为.但我发现了一篇官方文章,讲述了如何为全文搜索查询转换引号,这与[上述算法] [隐式]对齐.
| 归档时间: |
|
| 查看次数: |
19135 次 |
| 最近记录: |