【问题标题】:CONTAINS function is not working in SQL Server 2014CONTAINS 函数在 SQL Server 2014 中不起作用
【发布时间】:2016-01-03 12:08:23
【问题描述】:

以下查询是使用 SQL Server 2014 CONTAINS 函数编写的。

SELECT 
    Org1.OrganizationPK
    ,*
FROM Organization Org1
WHERE Org1.Deleted = 0
    AND CONTAINS (Org1.NAME,'"chris6*"')
    AND org1.OrgDomainInd = 1

但是,上述查询不工作。

我已经关注this article 了解更多关于 CONTAINS 函数的信息。我已经按原样验证了这些示例。即使在这里,我也没有得到任何结果。

我已经验证了这个post from stackoverflow,但我无法申请我的要求。

因此,我开始怀疑是否需要做更多的事情来配置 SQL Server 2014 以使用 CONTAINS 功能?请让我知道是否需要做任何事情来使 SQL Server 2014 准备好使用 CONTAINS 函数。 如果没有类似的东西,请给我建议解决方案。

请不要建议我使用 LIKE 运算符。我之所以这么说是因为,我的大多数同事都向我提出了同样的建议;因此,为防万一,我在此写下此声明。

我赶不上日程来完成这项任务。

【问题讨论】:

  • 您正在搜索的列上是否有full-text index? CONTAINS 是在 Transact-SQL SELECT 语句的 WHERE 子句中使用的谓词,用于对包含基于字符的数据类型的全文索引列执行 SQL Server 全文搜索。 (msdn.microsoft.com/en-us/library/ms187787.aspx)
  • @Pred:是的,我在所需列上有全文索引。
  • 在这种情况下,您能给我们一些示例数据和所需的输出吗?
  • 预期的结果很清楚。我需要组织表中所有以 Chris6 作为组织名称一部分的行。
  • 看到原始数据集,知道业务需求的你,预期的结果已经很清楚了,可惜StackOverflow上的读心和终极黑客服务正在维护中,所以我们不能使用它们获取更多信息。提供相关的 DDL、一些示例数据、您的目标以及预期的输出有助于我们为您提供帮助。 “不工作”是一个问题的板子描述(没有返回记录,返回的记录太多,发生错误,盒子爆炸等),尤其是当我们不了解环境时。

标签: sql-server sql-server-2014


【解决方案1】:

在CONTAINS 将针对您需要设置全文索引的列之前。这实际上是一个不同的引擎,在 SQL Server 中以separate service 运行,因此请确保它已安装运行。
一旦确定组件已安装(可能已经安装),您需要执行以下操作:

  1. 创建全文目录
  2. 针对您希望能够使用全文关键字的表/列创建全文索引(您可以在同一目录中拥有多个)
  3. 运行将爬取创建的索引并填充目录的填充(这些是 SQL Server 除了 mdf/ldf 之外还需要维护的单独文件)

Pinal Dave on CodeProject 提供了一个关于如何在 SQL Server 2008 中使用 SSMS 的好的教程。 SQL Server 2014 应该非常相似。 您还可以使用 TSQL 执行这些步骤:

  1. CREATE FULLTEXT CATALOG
  2. CREATE FULLTEXT INDEX
  3. ALTER FULLTEXT INDEX

【讨论】:

  • 嗨尼克,谢谢你的回答。 “Pinal Dave on Code”链接正在导航到空白页面。您能否使用正确的 URL 更新此链接!
【解决方案2】:

我相信contains 功能只能在配置为使用/支持全文搜索的表中使用——这是我很少使用的 SQL Server 的一项老功能。如果您没有使用全文搜索,我很确定 contains 将无法正常工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-14
    • 2016-09-11
    相关资源
    最近更新 更多