首先搜索支持对特定属性字段以下进行搜索:
photo_schema: ["logic_conn", "name", "description", "desc", "tags", "uid", "photo_id", "id", "album_id", "aid", "originName", "origin", "path"]
article_schema: ["logic_conn", "id", "aid", "author.uid", "uid", "category.atid", "atid", "title", "tags", "summary", "create_time", "update_time", "click", "top", "recommend"]
album_schema: ["id", "album_id", "name", "description", "desc", "user.uid", "uid"]
tags_square: ${photo_schema}.concat(["filter"])
例如搜索大数据文章的标签,在首页搜索输入 tags:大数据 ,回车即可
如果不输入字段名称,不同的页面会有不同的默认字段
(一)支持同时匹配多个字段:
字段与字段的之间的分隔符支持:[&;;,,]
字段名称与字段值的分隔符支持:[::=]
例如搜索名称和标签需要同时包含大数据的文章,输入 tags:大数据;name:大数据
假如字段值中包含分隔符,需要忽略分隔符的话,使用el表达式包裹
支持的包裹符号: ${ } , { } , " " , “ ”
例如相册页面搜索 path=https://cloud.imcoder.site/user/HtnkoPw/photos/RaUKlBN/HtnkoPw_RaUKlBN_ISpXt7B_RaUNvqH.png ,其中路径中包含分割符 :
可以这样输入避免分割 path=${https://cloud.imcoder.site/user/HtnkoPw/photos/RaUKlBN/HtnkoPw_RaUKlBN_ISpXt7B_RaUNvqH.png}
如果搜索的字段是正则匹配的话,那么包裹符要使用 "" , 反正是如果正则里有 {5} 重复匹配操作符的话,就不支持 ${}, {} 包裹
照片搜索支持字段间逻辑连接:
搜索 名称为山且描述为水 ,输入 name:山;desc:水;logic_conn:and ,
改变为或:name:山;desc:水;logic_conn:or
默认为与连接
(二)不同的页面有不同的默认域,如果想在特定的域操作的话,用 model 指明域字段
支持的域
文章: ["article", "a"]
照片: ["photo", "p", "photos"]
相册: ["album"]
标签广场:["ts"]
例如想搜索文章下的大数据的话,则输入 model=article大数据 或 m=a大数据 或 m=a&name=大数据
(三)下面字段支持正则匹配
photo_schema: ["tags"]
article_schema: ["title", "tags"]
album_schema: ["name"]
例如搜索文章中有五位数字的标题:model:a;title:[0-9]{5}
例如搜索标题以hadoop开头的文章:model:a;title:^hadoop
例如搜索标题中有5到8个字母的单词的文章:title:"[A-Za-z]{5,8}" 因为值中包含分割符号,所以用 "" 包裹忽略
(1)如果想转义特殊符号:用{ }包裹
例如$,可使用MySQL原生:\\$ ,也可以使用我定义的规则,{$}
当{}里面不是重复匹配操作符时解释为转义
转义多个符号: {$%^} 后台解释为 \\$\\%\\^
转义反斜杠:原生:\\\\ , 自定义:{\}
(2)如果想使用单词边界:原生太长,我的规则用 < > 包裹
例如搜索hadoop单词: title:<hadoop> , 后台解释为 [[:<:]]hadoop[[:>:]]
(3)如果想对同一个字段匹配多个值:使用 # 或 |
例如搜索同时包含linux和shell的标签:tags=linux#shell
例如搜索linux或shell的标签:tags=linux|shell
当需要搜索#符号的时候转义 tags={#}
(四)标签广场中过滤有数字的标签:m:ts;filter:"[0-9]+"