Sql Server 2008 - 换行符和全文查询

2024-01-31

我有一个数据库和一个全文索引表。我们称这张表为test。该表有一个名为testfield。现在,我们只插入一条记录,如下所示:

insert into test values ('word' + Char(13) + 'test')

该查询插入一个带有LINE_BREAK.

现在,让我们使用全文查询该表:

select * from test where contains(testfield, '"word test"')

在这种情况下,该查询根本不会返回任何内容。

Also:

select * from test where contains(testfield, '"wordtest"')

不返回任何内容(这是预期的方式)

现在,让我们再次查询表并修改搜索词:

select * from test where contains(testfield, '"word' + Char(13) + 'test"')

在这种情况下,查询将返回正确的行。

问题是:为什么会发生这种情况?我的意思是,SQL 在搜索单词时应该忽略换行符,但它没有。我不认为这是全文引擎的默认行为。至少是不能接受的。如果我的用户在我的表上插入带有换行符的行(这很常见,因为他们可以写任何他们想要的内容,因为该字段是备注字段),会发生什么?

有什么办法可以纠正这个问题吗?

EDIT

仅当我选择巴西语作为 FT 的语言时才会出现这种情况。如果我选择英语,我提到的问题都不会发生。

EDIT

在 Sql Server Denali CTP3 上,英语和葡萄牙语都不起作用。也许这是英语轮船中的错误。

EDIT

使用截图fts_解析器 https://i.stack.imgur.com/xCKRU.png


Try:

select * from test where contains(testfield, 'word NEAR test')

看着CONTAINS 文档 http://msdn.microsoft.com/en-us/library/ms187787.aspx,似乎您需要额外的邻近项才能找到过去的匹配项Char(13).

Edit:如果使用邻近词还不够,请尝试将字符添加到“干扰词”列表中,以便在索引中忽略它。您可以在以下位置找到干扰词文件$SQL_Server_Install_Path\Microsoft SQL Server\MSSQL.1\MSSQL\FTData。英文文件名为noiseENG.txt。您可以在以下位置找到有关此详细信息的更多信息Robert Sheldon 关于全文索引的文章 http://www.simple-talk.com/sql/learn-sql-server/understanding-full-text-indexing-in-sql-server/.

Edit:我还在对 CHAR(13) 和 NCHAR(13) 之间的差异进行一些研究,因为您在原始测试中可能会看到 unicode 与非 unicode 问题。

Edit:此外,2008 年葡萄牙语还获得了新的断词器 http://msdn.microsoft.com/en-us/library/ms142509.aspx。断字系统是特定于语言的,这可能是您看到这种差异的原因。它也是matters http://msdn.microsoft.com/en-us/library/ms142507.aspx为索引列选择了什么语言。

Edit:要检查单词是如何被破坏的,请尝试运行此命令(如果您有权访问 master):

declare @english nvarchar(20), @portugese nvarchar(20)
set @english = N'"hello' + NCHAR(13) + N'world"'
set @portugese = N'"Olá' + NCHAR(13) + N'mundo"'

select * from sys.dm_fts_parser (@english, 1033, 0, 0)
select * from sys.dm_fts_parser (@portugese, 2070, 0, 0)

Edit:这打破了英语和葡萄牙语中的短语“hello[13]world”。下面是结果的屏幕截图,这与我的想法一致。这CHAR(13)受到的待遇略有不同。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Sql Server 2008 - 换行符和全文查询 的相关文章

  • 如何从单行创建多行 - 规范化表

    我对 SQL 很陌生 并试图弄清楚这一点 我有一个名为 BUDGET 的表 其中包含一年中每个月的 12 列 显示该月的预算余额 所以表格看起来像这样 Department Year Month1 Month2 Month12 ABCD 2
  • SQL SERVER 中是否有与 MS Access 的 VAL() 函数等效的函数?

    我在直接在 sql server 中运行代码 Access Query 时遇到问题 其中包含VAL CoLUMN NAME 经过大量谷歌搜索后 我发现了一个CAST COLUMN AS DATATYPE 取代VAL 但是当该列是文本类型并且
  • 如何将 FOR AUTO XML 结果插入表中?

    我已经使用从表中检索了值 select from tableABC for xml auto elements 现在 有这个精确的表tableABC在另一台服务器上 我需要将这些检索到的值插入其中 如何实现这一目标 测试表及数据 creat
  • 如何根据 XML 参数更新表

    我有一个表 我想根据 XML 参数中的值更新其 varchar 字段之一 我有下表 ID Constraint Value 1 OldVal 1 OldVal 2 2 OldVal 2 OldVal 1 我想使用以下 XML 来更新Cons
  • 我可以计算 SQL Server 中两个日期之间有多少个周末吗?

    我正在计算为一份报告租用设备的收入 其中 周末的招聘成本会比平日增加10 那么我如何计算两个日期之间有多少个周末呢 在报告查询中 我也不能使用DECLARE 有人可以帮我做到这一点吗 太感谢了 这应该有效 DECLARE StartDate
  • 授予对视图的 SELECT 权限,但不授予对基础对象的 SELECT 权限

    我经常读到 视图的目的之一是安全性 允许某些用户访问基础表 而其他用户仅访问派生视图 考虑到这一点 我设计了几个向外部用户提供受限数据集的视图 一切都很好 但在实践中这是行不通的 我授予后SELECT对视图的权限 除非我授予 否则用户无法访
  • SQL Server 2008 FileStream 与普通文件

    我正在创建一个像 youtube 这样的应用程序来存储视频 我需要一些建议 我应该使用 SQL Server FileStream 来存储视频文件 还是应该将它们存储在硬盘上的某个位置并将路径记录为 SQL Server 内的 varcha
  • 在solr中获取pdf搜索结果的页码

    我正在构建一个 Web 应用程序 用户可以在其中搜索 pdf 文档并使用 pdf js 查看它们 我想显示搜索结果 其中包含找到搜索词的段落的简短片段以及用于在右侧页面打开文档的链接 所以我需要的是每个搜索结果的页码和简短的文本片段 我正在
  • MS SQL 2008 如何读取日志

    我有一个有很多行的表 有什么办法可以找出来当插入具体行时 我没有创建 更新时间列 Thanks 检查日志以读取此类信息可以在单个日志条目的基础上完成 但该格式仍然没有记录 而且解码起来确实不容易 我只会出于纯粹的兴趣或取证目的而查看它 如果
  • 按 1.99.10 和 1.99.9 sql server 排序

    抱歉我的错误 我应该提供问题的真实样本 我的 ID 中包含以下字符 示例代码 select ID from student order by ID Expected output from mine but system output JA
  • 查找 SSIS 包上次修改/部署日期 - SQL Server

    我想通过执行 SQL 查询找到 SSIS 包的最后修改日期 例如 下面的查询按降序返回过程的最后修改日期 我期待对 SSIS 包进行同样类型的查询 可以从DB获取这些信息吗 select name create date modify da
  • SQL Server 代理服务的凭据无效

    想要改进这篇文章吗 提供此问题的详细答案 包括引用和解释为什么你的答案是正确的 不够详细的答案可能会被编辑或删除 我正在尝试以管理员身份在本地计算机上安装 SQL Server 2008 开发服务器 在安装过程中我收到此错误 知道如何解决它
  • 在 CASE 语句中使用 CAST 时出现数据转换错误

    运行以下命令时出现错误 将数据类型 nvarchar 转换为 float 时出错 declare completeCommand nvarchar max x paramVal nvarchar 100 paramName nvarchar
  • 声纳+MS SQL数据库

    我正在尝试使用 mssql 服务器数据库初始化声纳 但我不能 使用 Microsoft SQL Server Management Studio 我创建了用户名 sonar 和密码 sonar 的用户 并向同时创建的 sonar 数据库授予
  • 将数据表传递给存储过程

    我有一个用 C 创建的数据表 using DataTable dt new DataTable dt Columns Add MetricId typeof int dt Columns Add Descr typeof string dt
  • 使用 gin 索引和 sqlalchemy 返回排名搜索结果

    我为全文搜索设置了 GIN 索引 我想获取与搜索查询匹配的记录列表 按排名排序 记录与搜索查询的匹配程度 对于结果 我只需要记录及其列 不需要用于排序的实际排名值 我有以下查询 它运行良好并从我的 postgresql 数据库返回预期结果
  • 如何从 SQL Server 的表中获取列名?

    我想查询一个表的所有列的名称 我发现如何做到这一点 Oracle https stackoverflow com q 452464 419956 MySQL https stackoverflow com q 193780 419956 P
  • 如何重命名 SQL Server 中名称中带有方括号的内容?

    我的一张桌子上有一列 周围有方括号 Book Category 我想重命名为Book Category 我尝试了以下查询 sp rename BookPublisher Book Category Book Category COLUMN
  • 快速搜索压缩文本文件

    我需要能够在大量压缩文件 txt 中搜索文本 压缩可能会改变为其他东西 甚至成为专有的 我想避免解压所有文件并压缩 编码 搜索字符串并在压缩文件中搜索 这应该可以通过对所有文件使用相同的码本使用霍夫曼压缩来实现 我不想重新发明轮子 所以 任
  • Visual Studio 2012 - 数据库发布向导已停止?

    我正在使用 VS 2012 和 SQL Server 2008 刚刚注意到服务器资源管理器中缺少 发布到提供商 选项 据此 数据库发布向导已停止使用 http forums asp net post 5122271 aspx http fo

随机推荐

  • 使用sqlite、flutter应用程序导入数据库

    我的主要目标是使用 sqlite sqlflite 插件 将数据库导入到 flutter 应用程序中 而不必将所有创建表硬编码到应用程序代码中 我希望信息能够在本地访问手机 在飞行模式下从手机访问数据 这就是我使用 sqlite 的原因 我
  • Javascript - ReactJS - 以 ReadableStream 作为源显示图像

    我有 PNG 图像作为 ReadableStream 我需要使用此 ReadableStream 作为源显示 html 元素 img 我应该将其转换为某种东西吗 或者我该怎么做 谢谢你的答案 来自谷歌的docs https develope
  • 在另一个工厂内使用一个工厂 AngularJS

    我有一个模块 angular module myModule 然后是工厂 angular module myModule factory factory1 function some var s and functions 然后是另一家工厂
  • VB 中 .NET MVC3 Razor 视图中的命名空间引用?

    如何使用 Razor 视图引擎引用 NET MVC3 中的命名空间 据我所知 这可以在 C 中完成 using Namespace 然而在VB中这似乎不起作用 Imports Namespace 我说的是 vbhtml 文件内部 您正在使用
  • 二次读取法

    我必须为二次类编写一个读取方法 其中二次以 ax 2 bx c 的形式输入 该类的描述是这样的 添加一个读取方法 要求用户提供标准格式的方程并正确设置三个实例变量 因此 如果用户输入 3x 2 x 则将实例变量设置为 3 1 和 0 这将需
  • 如何创建字节数组并用随机数据填充它[重复]

    这个问题在这里已经有答案了 我想根据给定大小创建一个填充随机数据的字节数组 我该怎么做 我的方法的签名如下所示 private byte GetByteArray int sizeInKb 这是我尝试过的 private byte GetB
  • iOS 与 IPv6 和 Azure 的问题

    我们的 Xamarin iOS 应用程序之一被拒绝 因为 Service URI 似乎无法从 IPv6 网络获得 从 2016 年 6 月 1 日开始 Apple 希望所有 iOS 应用程序在纯 IPv6 网络中完全兼容 Microsoft
  • 快速检索 WKInterfaceLabel 的文本

    如何在 WatchKit 中获取 Swift 或 Objective C 中的标签文本 该类不是 UILabel 而是 WKInterfaceLabel 我也尝试过搜索苹果的类库 https developer apple com libr
  • 如何使用 NHibernate 锁定模式在更新之前锁定对象?

    首先让我说明一下我想要实现的目标 我有一张桌子 里面装满了工作 有一个 Web 服务 其方法允许更改作业数据 称为SaveJob 此方法检索作业及其所有数据 对新数据运行验证 这需要对其他表进行一些数据库查询 然后将其保存回数据库 有点慢
  • 静态解析类型参数的深入描述

    我正在寻找对静态解析类型参数的非常全面的审查 它们到底可以做什么 它们的局限性是什么 使用它们的效果是什么 它们如何与普通类型参数结合 以及实例级内联成员如何工作 规范本身对这个主题的介绍很少 只是顺便提到了它们 它没有提到具有此类类型参数
  • 如何屏蔽 Jenkins Pipeline 项目中的密码字段?

    当密码属性定义在Jenkinsfile properties parameters password name KEY description Encryption key 每次执行管道时 Jenkins 都会提示用户提供其值 我希望这个参
  • ADO.NET 数据服务的数据压缩

    我有一个由 NET 应用程序 不是 IIS 公开的 ADO NET 数据服务 该服务由 NET 客户端应用程序使用 对此数据服务的某些调用会返回大量数据 我想压缩传输中的 XML 数据以减少负载并提高性能 这可能吗 我假设你是使用 WCF
  • 错误:膨胀类 com.google.android.material.textfield.TextInputLayout

    我收到错误 这是我的 XML 文件
  • 什么情况下endOffset>lastMsg.offset+1?

    Kafka 对于分区返回 endOffset 15 但可以使用的最后一条消息的偏移量为 13 而不是我期望的 14 我想知道为什么 The 卡夫卡文档 https kafka apache org 28 javadoc org apache
  • 用 C/C++ 编译 DLL,然后从另一个程序调用它

    我想制作一个简单的DLL 它导出一个或两个函数 然后尝试从另一个程序调用它 到目前为止我所看到的都是复杂的问题 将事物链接在一起的不同方式 奇怪的问题我什至还没有开始意识到存在 我只是想开始 通过做这样的事情 制作一个导出一些函数的 DLL
  • 测试一个封闭的ios应用程序

    我目前正在尝试处理不同的应用程序状态 关闭 后台或在应用程序的不同选项卡中 但是当我尝试测试应用程序在关闭并收到推送通知时如何工作 双击主页并强制关闭应用程序然后重新打开它 我不确定代码中哪里出了问题 由于我是从手机本身而不是 xcode
  • 使用 Axios 下载文件然后上传到 Amazon S3

    我已经看到关于使用 Axios 下载文件并将其上传到 S3 的各种问题 但没有一个将它们联系在一起 而且我对流 blob 多部分表单等感到困惑 到目前为止 这是我的代码 下载文件 const downloadResponse await a
  • MySQL 中的事务暂停是如何工作的?

    在 Spring 框架手册中 他们声明对于 PROPAGATION REQUIRES NEW 当前事务将被挂起 暂停交易 是什么意思 超时计时器停止对当前事务计数 这种暂停的实际影响是什么 谢谢你 Asaf 这并不意味着什么特别的 暂停的交
  • Mathematica 协助:使用 /。将方法替换为 IF[] 条件

    首先我要声明 我是一名 Mathematica 新手 这个问题可能很容易回答 但到目前为止 我在互联网上找不到任何针对这个特定问题的帮助 在这里 我基本上总结了我需要我的代码做什么 使用时出现一些问题 将命令替换为IF条件语句 基本上 我有
  • Sql Server 2008 - 换行符和全文查询

    我有一个数据库和一个全文索引表 我们称这张表为test 该表有一个名为testfield 现在 我们只插入一条记录 如下所示 insert into test values word Char 13 test 该查询插入一个带有LINE B