当前位置: 首页 > 面试题库 >

为什么SQL全文索引不返回包含#的单词的结果?

别子实
2023-03-14
问题内容

例如,我的查询类似于使用SQL Server 2005的以下查询:

SELECT * FROM Table WHERE FREETEXT(SearchField, 'c#')

定义了全文索引以使用列SearchField,该列在使用时返回结果:

SELECT * FROM Table WHERE SearchField LIKE '%c#%'

我相信#是一个特殊的字母,那么如何让FREETEXT对于以上查询正常工作?


问题答案:

#char被索引为标点符号,因此被忽略,因此看起来我们将从单词索引忽略列表中删除了字母C。

完成此操作并重建索引后,在本地对其进行了测试,我得到了结果!

考虑在索引列上使用其他分词系统语言,以便那些特殊字符不会被忽略。

编辑:我也发现此信息:

c#被索引为c(如果c不在您的干扰词列表中,请参阅稍后在干扰词列表中查看更多信息),但是C#被索引为C#(在Win2003上运行的SQL
2005和SQL 2000中,无论C或c是否在您的干扰中单词表)。存储为C#的不仅是C#,而且任何大写字母后跟#。相反,c
(以及其他任何小写字母后跟 )都被索引为c(无论c是否在您的干扰词列表中)。



 类似资料:
  • 问题内容: 通过以下查询,我得到的结果包含单词“ International”和“ Shipping”,我还得到了包含“ International”或“ Shipping”的结果。我该怎么做才能确保结果同时包含两个单词而不只是其中之一? 任何帮助将不胜感激,谢谢! 问题答案: 在每个必需的单词前添加一个,然后使用。 11.8.2。 布尔全文搜索 在实现此功能时,MySQL使用了有时称为隐式布尔逻

  • 问题内容: 该表包含以下值: 以下查询: 返回应该返回的时间值。为什么?它如何实现价值? 我知道可以通过添加SUM来纠正SUM : 但我想知道价值背后的逻辑 问题答案: 确切地说,和是多少?请注意来源:唯一具有非null和的行。 (应OP的要求复制)

  • 问题内容: 如果我有包含10个元素的列表: 为什么l [10]返回IndexError,而l [-1]返回0? 如果列表中没有以前的元素,我想做的就是抛出一个错误。 问题答案: 在Python中,负列表索引表示从列表右边开始计数的项(即的简写形式)。 如果发现需要负索引来指示错误,那么您可以简单地检查这种情况并亲自引发异常(或在那里进行处理):

  • 我试图在RESTAPI中对登录和安全性进行单元测试,所以我尝试尽可能地模拟现实生活中的请求序列。 我的第一个要求是: (请参见pastebin上的完整类)。 我尝试在这里获取cookie,以便以后能够使用收到的CSRF令牌登录,但是数组是空的! 然而,如果我运行我的应用程序并调用 我确实得到了一个Set Cookie头,可以稍后使用该Cookie(和CSRF令牌)进行身份验证。 所以问题是:如何让

  • 问题内容: 以下是gcc 4.4.4下的简单代码段错误 将最后一行更改为 工作良好。使用编译时,这两个版本均可使用。我是在简单地调用未定义的行为,还是在标准中进行了某些更改,从而使代码可以在C99下工作?为什么在C89下崩溃? 问题答案: 我相信C89 / C90和C99中的行为均未定义。 是数组类型的表达式,特别是。 C99 6.3.2.1p3说: 除非它是 sizeof 运算符或一元 & 运算

  • 问题内容: 我有一个简单的文档,其中包含一个名为“关键字”的字段,该字段被索引用于文本搜索。关键字是单词和短短语的数组,如下所示: {“关键字”:[“餐厅经理”,“厨师”,“公共汽车男孩”]} 查询必须包含文档关键字中至少一项的所有单词,以便返回该文档。 例子: “经理”不应返回此文档。 “ bus”和“ manager”不应返回此文档。 “餐厅经理”应返回此文档。 “ chef”应返回此文档。