没有合适的资源?快使用搜索试试~ 我知道了~
lucene相关技术的文档资料资料资料。
资源详情
资源评论
资源推荐
一、Lucene 的查询语法
所支持的查询语法可见
(1) 语法关键字
!"#$%&'()*+,-
如果所要查询的查询词中本身包含关键字,则需要用-进行转义
(2) 查询词(Term)
支持两种查询词,一种是单一查询词,如)),一种是词组"#,
如)./)。
(3) 查询域(Field)
在查询语句中,可以指定从哪个域中寻找查询词,如果不指定,则从默认域中查找。
查询域和查询词之间用分隔,如 0)100)。
仅对紧跟其后的查询词起作用,如果 0100,则仅表示在 0 中查询 1,而
00 要在默认域中查询。
(4) 通配符查询(Wildcard)
支持两种通配符:,表示一个字符,+表示多个字符。
通配符可以出现在查询词的中间或者末尾,如 ,,+,+,但决不能出现在开始,
如+,,。
(5) 模糊查询(Fuzzy)
模糊查询的算法是基于 010,也即当两个词的差别小于某个比例的时
候,就算匹配,如 *2,即表示差别小于 3,相似度大于 2 才算匹配。
(6) 临近查询(Proximity)
在词组后面跟随*,表示词组中的多个词之间的距离之和不超过 ,则满足查询。
所谓词之间的距离,即查询词组中词为满足和目标词组相同的最小移动次数。
如索引中有词组)4)。
如果查询词为)4)*,则匹配。
如果查询词为)4)*3,距离设为 3 方能匹配,设为 则不能匹配。
"# 4
"# 4
"3# 4
如果查询词为)4)*5,距离设为 5 方能匹配。
"# 4
"#
4
"3# 4
"# 4
"5# 4
6
(7) 区间查询(Range)
区间查询包含两种,一种是包含边界,用&789:'指定,一种是不包含边界,用$789
:%指定。
如 /&33893',当然区间查询不仅仅用于时间,如 0$70/
89;%
(8) 增加一个查询词的权重(Boost)
可以在查询词后面加(< 来设定此查询词的权重,默认是 ,如果 < 大于 ,则说明此查
询词更重要,如果 < 小于 ,则说明此查询词更不重要。
如 =(5,)=)(5)7)
(9) 布尔操作符
布尔操作符包括连接符,如 7<1,9>,和修饰符,如 <98,,。
默认状态下,空格被认为是 9> 的关系,
?@1A9"97<1#设置为空格为 7<1。
表示一个查询语句是必须满足的"0/#,<98 和表示一个查询语句是不能满足的
"040/#。
(10) 组合
可以用括号,将查询语句进行组合,从而设定优先级。
如"=9>#7<1.40
6
的查询语法是由 ?@ 来进行解析,从而生成查询对象的。
通过编译原理我们知道,解析一个语法表达式,需要经过词法分析和语法分析的过程,也
即需要词法分析器和语法分析器。
?@ 是通过 B;; 来生成词法分析器和语法分析器的。
6
二、JavaCC 介绍
本节例子基本出于 B;;0 的文章,
...*B;;80
B;; 是一个词法分析器和语法分析器的生成器。
所谓词法分析器就是将一系列字符分成一个个的 8=,并标记 8= 的分类。
例如,对于下面的 ; 语言程序:
00"#$
666C
%
66
将被分成以下的 8=
D0EFDEFD0EFD"EFD#EF
DEFD$EFD-EFD-EFDE
DEFDEFDEFDCEFD-EF
D%EFD-EFDE
标记了 8= 的类型后如下:
GHI<8FJ@7;KFI1F9@7>F;@7>F
J@7;KF9:>7;KFJ@7;KFJ@7;KFGH>K8L><F
J@7;KF9;87;9<J8FJ@7;KFJKMI;99<F
J@7;KF
;:>7;KFJ@7;KFK9N
K9N 表示文件的结束。
词法分析器工作过程如图所示:
此一系列 8= 将被传给语法分析器"当然并不是所有的 8= 都会传给语法分析器,本
例中 J@7;K 就例外#,从而形成一棵语法分析树来表示程序的结构。
剩余27页未读,继续阅读
harrypotter_yang
- 粉丝: 6
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0