【问题标题】:Is there a way to select a document that contains a word not followed by a particular word in full text?有没有办法选择包含一个单词的文档,而不是全文中的特定单词?
【发布时间】:2014-06-25 19:44:11
【问题描述】:

我有一个名为 Documents 的表,其中包含 Content 字段全文索引

现在我需要以这样一种方式创建一个查询,该查询应该返回至少有一个单词“hello”且后面没有单词“world”的文档。

   --sth like
   select content from documents
   where contains(Content,N'hello(not followed by word "world")')

结果应该是

  1. "hello" -- 因为它里面没有跟随 hello 的世界"

  2. “你好朋友和你好世界”——这个文档有单词 hello 不是跟着世界吧”

能否以实现上述结果的方式制定全文查询?如果有怎么办??我想尽可能避免手动解析内容。

【问题讨论】:

    标签: sql-server sql-server-2008 full-text-search


    【解决方案1】:

    您描述的是正则表达式模式,不幸的是 SQL Server 不支持它(即使是最新的 2014 版本)。最好的办法是创建一个 CLR 函数,它使用 .NET 的 RegEx 功能。

    特定于您的示例的模式是:

    hello (?!world)
    

    它将匹配 hello therehello friend and hello world 但不匹配 hello world

    一些资源:

    【讨论】:

      猜你喜欢
      • 2015-08-23
      • 1970-01-01
      • 2014-05-12
      • 2021-08-24
      • 1970-01-01
      • 2013-10-15
      • 2015-08-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多