【问题标题】:How to search for pages with titles starting with a specific phrase?如何搜索标题以特定短语开头的页面?
【发布时间】:2021-03-10 07:41:07
【问题描述】:

我有点困惑我应该如何组合 CQL 搜索。基本上,我想抓取所有标题以特定顺序以特定字符串集开头的页面。示例:

搜索“测试页”应该返回:

  • 测试页
  • 测试页 (1)
  • 再次测试页面

它不应该返回:

  • 测试
  • 页面
  • 页面测试
  • (1) 测试页
  • 再次测试页

我尝试了很多搜索,例如:

  • title = "Test Page*"
  • title ~ "Test Page*"
  • title ~ "Test" AND title ~ "Page*"

但没有一个完全符合我的需要。我需要更改哪些内容才能仅匹配标题的开头?

或者,如果无法搜索标题开头的单词,我会很高兴只搜索“测试页 (*)”之类的内容,其中 * 可以匹配任何字符。然后它应该返回这个:

  • 测试页 (1)
  • 测试页 (2)

但不是这个:

  • 测试页
  • 再次测试页面
  • 测试
  • 页面
  • 页面测试
  • (1) 测试页
  • 再次测试页

【问题讨论】:

    标签: confluence-rest-api


    【解决方案1】:

    对于包含精确字符串或短语的 CQL 搜索,您应该像在第二个示例中那样使用 use the CONTAINS operator 并用双引号将短语括起来:

    title ~ "Test Page*"
    

    CQL 也是 supports the single character wildcard search symbol (?),因此对于您请求的“替代”搜索,表单应为:

    title = "Test Page(?)"
    

    虽然regular expressions syntax is allowed 在反斜杠之间,但我没有看到任何证据表明可以通过元素的开头 (^) 或结尾 ($) 进行选择。但是,使用带有多字符通配符的 EQULAS 运算符应该得到相同的结果:

    title = "Test Page*"
    

    因此,根据所有可用的文档,包括 CQL 所基于的 Apache Lucene 的文档,您做对了。你说

    '没有一个完全符合我的需要。'

    您能否提供更多信息,说明这些查询不正确的原因?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-16
      • 2016-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-09
      • 1970-01-01
      相关资源
      最近更新 更多