我有点困惑,我应该如何把CQL搜索。基本上,我想抓取所有以特定顺序的特定字符串开头的标题的页面。例子:
搜索"测试页";应该返回:
- 测试页面
- 测试页(1)
- 再次测试页
不应该返回:
测试- 页面测试
- (1)测试页
- 再次测试页
我尝试了很多搜索,比如:
title = "Test Page*"
title ~ "Test Page*"
title ~ "Test" AND title ~ "Page*"
但是它们都不完全符合我的需要。我需要更改什么以匹配标题的开头?
或者,如果不可能在标题的开头搜索单词,那么如果我可以搜索像"Test Page(*)&"这样的内容,其中*将匹配任何字符,我会很高兴。那么它应该返回如下内容:
- 测试页(1)
- 测试页(2)
但不是这个:
- 测试页面
- 再次测试页 测试
- 页面测试
- (1)测试页
- 再次测试页
对于包含精确字符串或短语的CQL搜索,应该使用CONTAINS操作符并用双引号将短语括起来,就像在第二个示例中所做的那样:
title ~ "Test Page*"
CQL还支持单字符通配符搜索符号(?),所以对于您请求的"替代"搜索,表单应该是:
title = "Test Page(?)"
虽然在反斜杠之间允许正则表达式语法,但我没有看到任何证据表明可以通过元素的开始(^)或结束($)进行选择。但是,使用带有多字符通配符的equas操作符应该会得到相同的结果:
title = "Test Page*"
所以,根据所有可用的文档,包括CQL所基于的Apache Lucene文档,你做得对。你说
'它们都不完全符合我的需要'
你能提供更多关于为什么这些查询不正确的信息吗?