1.基本概念
在Lucene中,一个查询通常被分割为词项与操作符。Lucene中的词项可以是单个词,
也可以是一个短语。如果设置了查询分析过程,那么预先选定的分析器,将会对查询中
所有词项进行处理。
布尔操作符:
AND:
它的含义是:文档匹配当前从句当且仅当AND操作符左右两边的词项都在文档中出现。
例如: apache AND lucene, 同时包含 apache 和lucene 这两个词项的文档才回
返回给用户。
OR:
它的含义是,包含当前从句中任意词项的文档都会被视为与该从句匹配。
NOT:与当前从句的文档必须不包含NOT操作符后面的词项。
+:只有包含+操作符后面词项的文档才回被认为是从句匹配。
-:与从句匹配的文档不能出现-操作符后的词项。
2.在字段中查询
就像 elasticsearch 的处理方式那样,Lucene中所有的数据都存储在字段中,而字段
又是文档的组成单位。为了实现针对某个字段的查询,用户需要提供字段名称,
再加上冒号以及将要在该字段中执行查询的从句。
title字段中包含elasticsearch 的文档:
title:elasticsearch
title中同时包含:elasticsearch 和 "mastering book"的文档。
title:(+elasticsearch+"mastering book")
或者:
+title:elasticsearch+title:"mastering book"
3.词项修饰符
Lucene支持两种通配符:?和*;
?:匹配任意一个字符
*:匹配多个字符
处于性能的考虑,通配符不能作为词项的第一个字符出现。
数值类型上执行范围查询:
price:[10.00 TO 15.00]
--字符串类型上执行范围查询;
name:[Adam TO Adria]
--大于等于10,小于15的文档。
price:[10.00 TO 15.00}
4.特殊字符处理
+ - && || ! ( ) {} [] ^ " ~ * ? : \ /
--遇到这些需要先使用反斜杠对这些特殊字符进行转义。