EasySearch Rules 规则语法速查手册

围绕地域标签、情感标签、人名标签三大企业标注场景,系统梳理规则编写核心语法。


一、规则结构

go 复制代码
expression\t#offset#description

通过 _import API 导入时只需提供 expressiondescription,系统自动分配 offset:

go 复制代码
{ "expression": "北京 or 京城", "description": "地域_北京" }

二、逻辑操作符

操作符 别名 说明
and & 同时满足
or ` `
not (二元) -``&! 排除

优先级not(一元)> near > and > or

用括号 () 明确优先级:

go 复制代码
(source(新华网) or source(人民网)) and title(北京 or 上海)

三、字段限定

语法 说明 示例
field(expr) 任意位置子串匹配 title(北京)
field[expr] 全字段精确匹配 sentiment[正面]

注意事项:

  • title / content 是内置字段,无需声明

  • 未声明的自定义字段默认当作 content 处理

  • 数值字段必须在编译时声明:

go 复制代码
POST /_match_rules/repo/_compile
{ "fields": ["score", "heat"] }

四、正则表达式

语法 用途 示例
{``{regex}} 简单正则 {``{1[3-9]\d{9}}} 匹配手机号
field("regex") 字段内正则 author("张.*")
[expr and/not ...] 复合正则逻辑 [author("张.*") and not author("张三丰")]

⚠️ 字段内正则必须用双引号author(/张.*/) 写法错误。


五、距离匹配(near)

go 复制代码
A near/n B     # A、B 间距 ≤ n,不限顺序
A near/+n B    # A 在 B 之前,间距 ≤ n
A near/-n B    # A 在 B 之后,间距 ≤ n

距离单位:每个汉字 / 英文单词 / 数字串 = 1。

near vs and 的区别:

go 复制代码
# and:文章中两词出现即命中,可能毫不相关
北京 and 发布会

# near:限制词距,确保同一语境
北京 near/10 发布会

支持链式和组合写法:

go 复制代码
(北京 or 京城) near/5 (经济 or GDP)

六、数值范围匹配

go 复制代码
score(80, 100)    # 正面评价区间
score(0, 40)      # 负面评价区间
heat(10000, 99999)

字段必须为数值类型,且编译时需声明。


七、三大场景示例

地域标签

go 复制代码
{ "expression": "北京 or 京城 or 首都 or 中关村", "description": "地域_北京" }
{ "expression": "深圳 or 鹏城 or 南山区 or 前海",  "description": "地域_深圳" }

情感标签

go 复制代码
{ "expression": "非常好 or 极佳 or 强烈推荐",         "description": "正面_强烈好评" }
{ "expression": "一般 or 还行 or 中规中矩",            "description": "中性_平淡评价" }
{ "expression": "严重不满 or 投诉 or 退款 or 维权",    "description": "负面_强烈差评" }

人名标签

go 复制代码
{ "expression": "author(\"张.*\") and source(清华大学 or 北京大学)", "description": "人名_高校学者姓张" }
{ "expression": "title(\"王.*\") and content(企业家 or CEO or 创始人)", "description": "人名_企业家姓王" }

八、常见错误速查

错误 错误写法 正确写法
- 被解析为 NOT 2024-2025年报 "2024-2025年报"
正则未加双引号 author(/张.*/) author("张.*")
数值字段未声明 编译时不传 fields { "fields": ["score"] }
分隔符用空格 北京 or 京城 地域_北京 表达式与描述之间用 Tab

九、特殊字符转义速查

含以下字符的字面值 需加引号:-``&``|``( )``[ ]``{ } 及空格。

经验法则:规则中出现可能引起歧义的字符,一律加引号。


十、规则编写建议

  1. 先简后繁:从纯关键词 OR 开始,逐步加字段限定和 near

  2. 标题优先title(关键词) 精准度远高于全文匹配

  3. near 替代 and:同一语义场景下,near 能显著降低误报率

  4. NOT 排除干扰 :情感标签需排除假设性语境(and not (预测 or 如果 or 假设)

  5. 正则处理变体 :人名、型号等模糊匹配优先用 author("张.*") 形式


Easysearch 审计日志实战:谁访问了你的集群?

Easysearch 专属官方网站上新啦!

Easysearch------一款面向企业级场景打造的国产搜索引擎

Easysearch 智能助手的 Web 端升级实战

Easysearch------Elasticsearch 国产化替代方案!

Elasticsearch 国产化替代 ------信创政策到技术选型的全面指南调研报告 V1.0

相关推荐
就叫_这个吧3 小时前
Java递归方法实现面包屑导航
java·开发语言
To_OC3 小时前
面试被问了三回三栏布局,这次我终于把 BFC 那层窗户纸捅破了
前端·css·面试
fīɡЙtīиɡ ℡3 小时前
AI 应用系统设计
java·开发语言·人工智能
To_OC4 小时前
啃完 TS 工具类型我发现:Pick 和 Omit 原来就是一层窗户纸
前端·面试·typescript
今天AI了吗5 小时前
Python 基础语法(一):常量、变量、输入输出与运算符
开发语言·数据库·人工智能·python·sql·深度学习·机器学习
风月说与山鬼5 小时前
三、大括号语法
前端·react.js
kyriewen5 小时前
我把最常踩的8个CORS跨域报错整理了一遍——第8个去年还不存在
前端·javascript
TELL5215 小时前
selenium webdriver 第二次初始化的异常
开发语言·python
Csvn6 小时前
🕰️ 闭包 + setTimeout 的 5 个经典陷阱:为什么定时器看到的永远不是最新的值?
前端