lucene 的查询语法

lucene 的查询语法:

单个关键字的查询:
TermQuery可以用“field:key”方式,例如”content:lucene”
如果field是缺省field,可以省去field,例如”lucene”

多个关键字查询:
BooleanQuery:写法为”中国 AND 美国”  “中国 OR 美国”  括弧用于改变优先级,如:布莱尔 OR (中国 AND 美国)

匹配查询:
WildcardQuery:*或?  ,例如“content:use*”
?是0到1个字符匹配,只输出完全匹配的内容,如”国?”  ,得到的结果只能是 “国”,“国家”,,,不会超过2个字长
当通配符位于查询项的开头时,不能使用QueryParser进行解析,但可在程序里构建,但性能不高,不建议使用

前缀查询:实质就是*在词尾的匹配查询,此类查询会被优化为前缀查询

PrefixQuery用‘*’,例如“中*”。

短语查询:的文本都将会被分析和转换为PhraseQuery对象

PhraseQuery用‘~’,例如“content:”中日”~5”。双引号内

模糊查询:用于查询相似的关键字
FuzzyQuery用‘~fuzzy’,fuzzy是0.1~1的模糊度,不带fuzzy表示模糊度为0.5;例如“content: wuzza ~”  实际的查询为“content: wuzza ~0.5”

区间查询:可以查询字段为Time和数字的数据;
时间格式必须是:
RangeQuery用‘[]’或‘{}’,前者表示闭区间,后者表示开区间,例如“time:[20060101 TO 20060130]”,注意TO区分大小写。

双引号内的文本都将会被分析和转换为PhraseQuery对象。而只由一个项组成的短语则会被优化成一个TermQuery对象

加权操作:
^ 号后的浮点型数据可以为^号之前的查询设置加权因子。例如,查询表达式“junit^2.0 testing”就可以将junit的TermQuery对象的加权因子设置为2.0,而testing的加权因子仍然为默认的1.0。你能够为包括由圆 括号组成的组在内的任何查询类型设置加权因子

发表评论

返回顶部