lucene 支持的检索语法和检索运算符分类列表
近期用到 lucene ,读了一些文档,因为以前一直用开发商用引擎或用商用引擎的原因,所以一上来就想找比较完整的分类文档,主要是lucene的数据类型,支持的运算符,运算能力,各种功能的性能推荐等等。后来发现lucene文档很详细,内容很全了,可惜有些内容没有汇总,散落在各处,找了半天也没找到个全的,自己动手总结了一个。
检索请求语法:
基本形式: q=检索项和运算符组成的检索请求表达式
检索项:
1, 检索字段名称(在建立索引时候给定)
1.1用户可以指定要检索的字段,语法为 “字段名=检索串”
1.2不输入情况下,自动检索默认检索字段,建立索引时设置
1.3多字段之间可以进行逻辑运算检索,默认情况下为或关系,
1.4字段内容范围 为紧邻的字符串,或者可以用括号运算符确认
2, 请求文本(非检索系统保留字的文本串)
2.1可以用双引号 括起来 当作一个多个词语的短语串整体来对待
2.2保留字如下:+ ,-, &&, ||, !, ( ), { }, [ ], ^, ", ~, *, ?, :, /,
2.3如果需要输入保留字,请自行做好转义 转义符如下:/
运算符列表
运算集名称 |
运算集备注 |
运算符名称 |
符号 |
解释 |
示例 |
逻辑运算符 |
支持 |
与 |
AND或者 && |
|
“A” AND “B” |
或 |
OR 或者 || |
|
“A” OR “B” | ||
非 |
NOT或者 ! |
|
“A” NOT “B” 表示检索含有A但不含有B | ||
存在操作符 |
+ |
|
+“A” OR “B” | ||
禁止操作符 |
- |
|
“A”-“B” 表示A的结果中除去B的结果 | ||
括号 |
() |
提升优先级别 |
(A | B) @ C | ||
范围运算符 |
支持 |
|
|
|
|
|
|
|
| ||
开区间 |
( TO ) |
|
(2 TO 18) | ||
闭区间 |
[ TO ] |
|
[ apple TO bear ] | ||
同在运算符 |
当前不支持 |
同句 |
s , S |
|
A s B |
不同句 |
nots ,NOTS |
|
A nots B | ||
同段 |
p ,P |
|
A p B | ||
不同段 |
notp ,NOTP |
|
A notp B | ||
邻近运算符 |
支持 |
|
“word1空格word2”~数字 |
|
“A B”~10 表示 检索A与B之间 |
|
|
|
| ||
|
|
|
| ||
|
|
|
| ||
通配符 |
支持 |
0或1字符 |
? |
|
Englishman? |
多字符 |
+ |
|
Englishm+ | ||
模糊运算符 |
支持 |
|
~浮点型权值 |
只支持英文,并且按照应分分析方法建立的字段 |
在一个具体的检索词或者部分后面添上运算符 fa~ 结果可以得到 如 father 默认情况下权值为0.2 可以用户指定 China~1.5 |
权值指定 |
支持 |
|
^权值数字 |
支持词,短语,字段 |
例如: 1,A^3 B 2,“A AND B”^2 “C D”
|