【声明】1、本文转至http://www.diybl.com/course/3_program/java/javajs/200843/108185.html
2、《新一篇: lucene 支持的检索语法和检索运算符分类列表》请参考http://www.cnblogs.com/zsm/archive/2008/06/12/1218294.html
近期用到 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”
|