Lucene 的Query Parser(查询语法)
来源:互联网 发布:淘宝详情页和主图视频 编辑:程序博客网 时间:2024/06/07 18:28
term:
语法:
term = SingleTerm | PhraseTerm
Single Term = 单个word,如"hello"
Phrases Term = 用双引号""括起的短语,如"hello dolly"
Field:
对某个指定字段进行查询,其语法为:
[Field:]term
如果省略field,则对缺省字段进行查询。
注意:在指定filed时,它只修饰它的直接term,即紧挨着它的term。
例如,如果要检索字段title是否包含"Do it right",正确的写法为:title:"Do it right" ,
而不是title:Do it right,后者将查询title字段是否包含"Do" 或者缺省字段text中是否包含it 或者 right关键字。
Field Grouping:(group multiple clauses to a single field.)
语法:
Field:(multiple-term-expression)
查询field字段是否满足多个term子句的条件,即用"()"括起的term表达式。此语法使得表达式更加紧凑。
如:title:(+return +"pink panther")
title必须包含return和"pink panther"
Term Modifiers:(项修饰符)
通配符(Wildcard Searches):
?表示匹配单个字符
* 表示匹配0到多个字符
说明:
这两个特殊字符只能用于修饰SingleTerm,且不能是SingleTerm的第一个字符。
如果在PhraseTerm中出现,则为字面含义,不被看做通配符,常被看作stop word而被忽略。
模糊匹配(Fuzzy Searches):
语法; SingleTerm~[n] n=[0,1]
查找与term相似度为n的匹配项,n越大越相似,缺省n为0.5
邻近搜索(Proximity Searches):
语法:PhraseTerm~n
指定phrase中的单词的邻近距离,如:"jakarta apache"~10 表示jakarta与apache的距离应在10个单词以内
如指定n=0则表示这两个word紧挨着,但不保证它们出现的先后顺序。
范围搜索(Range Searches):
语法:
[r1 TO r2] 闭区间
or
{r1 TO r2} 开区间
说明:
排序规则为字典序。
括弧应匹配,不能将"{"和"]"混合使用。(此为用Luke在2.4.9的索引上测试的情况)
增加相关度(Boosting a Term):
语法:
term^n (n>0,default n=1)
如果文档中出现term关键字,则在计算其相关度时其权重增加。
布尔表达式:
布尔操作符(全部大写):AND(&&), "+", OR(||), NOT(!),"-"
几个等价关系:
AND = &&
OR = ||
NOT = !
几点说明:
或关系:term之间如果没有布尔操作符,则等价于OR
非关系:NOT是二元表达式,单个term不能用NOT表达式。
"+" required operator:必有操作符
其语法为:
+term
表示必须包含term,此为一元表达式
"-" prohibit operator:必无操作符
其语法为:
-term
表示不可包含term,此为一元表达式
表达式的优先级:
表达式的优先级缺省遵循布尔表达式的规则,但可以通过"()"改变表达式的优先级。
如:(jakarta OR apache) AND website
转义字符:
Lucene的特殊字符包括: + - && || ! ( ) { } [ ] ^ " ~ * ? : /
要想获得这些特殊字符的字面值,用"/"进行转义即可。
语法:
term = SingleTerm | PhraseTerm
Single Term = 单个word,如"hello"
Phrases Term = 用双引号""括起的短语,如"hello dolly"
Field:
对某个指定字段进行查询,其语法为:
[Field:]term
如果省略field,则对缺省字段进行查询。
注意:在指定filed时,它只修饰它的直接term,即紧挨着它的term。
例如,如果要检索字段title是否包含"Do it right",正确的写法为:title:"Do it right" ,
而不是title:Do it right,后者将查询title字段是否包含"Do" 或者缺省字段text中是否包含it 或者 right关键字。
Field Grouping:(group multiple clauses to a single field.)
语法:
Field:(multiple-term-expression)
查询field字段是否满足多个term子句的条件,即用"()"括起的term表达式。此语法使得表达式更加紧凑。
如:title:(+return +"pink panther")
title必须包含return和"pink panther"
Term Modifiers:(项修饰符)
通配符(Wildcard Searches):
?表示匹配单个字符
* 表示匹配0到多个字符
说明:
这两个特殊字符只能用于修饰SingleTerm,且不能是SingleTerm的第一个字符。
如果在PhraseTerm中出现,则为字面含义,不被看做通配符,常被看作stop word而被忽略。
模糊匹配(Fuzzy Searches):
语法; SingleTerm~[n] n=[0,1]
查找与term相似度为n的匹配项,n越大越相似,缺省n为0.5
邻近搜索(Proximity Searches):
语法:PhraseTerm~n
指定phrase中的单词的邻近距离,如:"jakarta apache"~10 表示jakarta与apache的距离应在10个单词以内
如指定n=0则表示这两个word紧挨着,但不保证它们出现的先后顺序。
范围搜索(Range Searches):
语法:
[r1 TO r2] 闭区间
or
{r1 TO r2} 开区间
说明:
排序规则为字典序。
括弧应匹配,不能将"{"和"]"混合使用。(此为用Luke在2.4.9的索引上测试的情况)
增加相关度(Boosting a Term):
语法:
term^n (n>0,default n=1)
如果文档中出现term关键字,则在计算其相关度时其权重增加。
布尔表达式:
布尔操作符(全部大写):AND(&&), "+", OR(||), NOT(!),"-"
几个等价关系:
AND = &&
OR = ||
NOT = !
几点说明:
或关系:term之间如果没有布尔操作符,则等价于OR
非关系:NOT是二元表达式,单个term不能用NOT表达式。
"+" required operator:必有操作符
其语法为:
+term
表示必须包含term,此为一元表达式
"-" prohibit operator:必无操作符
其语法为:
-term
表示不可包含term,此为一元表达式
表达式的优先级:
表达式的优先级缺省遵循布尔表达式的规则,但可以通过"()"改变表达式的优先级。
如:(jakarta OR apache) AND website
转义字符:
Lucene的特殊字符包括: + - && || ! ( ) { } [ ] ^ " ~ * ? : /
要想获得这些特殊字符的字面值,用"/"进行转义即可。
0 0
- Lucene 的Query Parser(查询语法)
- Lucene 的Query Parser(查询语法)
- Lucene Query Parser Syntax
- Apache Lucene - Query Parser Syntax
- Lucene的查询语法!
- lucene的查询语法
- Lucene中Query语法树的整理
- lucene query语法详解
- Solr的标准查询解析器Standard Query Parser
- Solr的查询解析器DisMax Query Parser
- Solr的查询解析器The Extended DisMax Query Parser
- 基于lucene的案例开发:Query查询
- Lucene 查询(Query)子类
- Lucene 查询(Query)子类
- Lucene查询语法详解(Lucene query syntax)- 用于Kibana搜索语句
- Lucene的查询语法(2012.11.06)
- ELK:kibana使用的lucene查询语法
- ELK:kibana使用的lucene查询语法
- C++中的运算符重载(二)
- Invalid file name: must contain only [a-z0-9_.]
- hadoop简介
- WPF下、使用Double作为点坐标带来的问题或line直线颜色不明显的问题的解决方法
- 【MoreWindows工作笔记11】EnumClipboardFormats 剪切板内容的数据格式
- Lucene 的Query Parser(查询语法)
- TRUNC函数的用法
- 内核文件系统的注册
- Boost多线程编程
- 如何成为明星程序员
- 黑马程序员_SQL SERVER基础知识整理
- 进度更新&思路转换
- Android 扩展ImageView来播放gif动画
- jsp内置对象