我们在搜索中可能会遇到要搜索索引文件中不同字段,不同字段之间就存在了与或非的运算关系,如:这个xx字段中必须存在什么什么关键词,而另一个 XXX字段可以存在或不存在什么什么关键词等等等.这就需要有BooleanQuery这个得到一个组合检索对象,进行组合检索了. BooleanClause是在一个BooleanQuery中子句.该类中定义了一个静态最终内部类Occur定义了BooleanQuery的运算符: public static final Occur MUST = new Occur("
BooleanQuery对两种不同查询场景执行不同的算法: 场景1: 所有的子句都必须满足,而且所有的子句里没有嵌套BooleanQuery. 例: a AND b AND c 上面语句表示要同时包含a,b,c三个字符(词元)的文档,假如现在索引里包含a的文档有4,6,8:b的文档有:2,4,6:c的文档有:3,4,5,这个语句就是找出编号为4的这个文档. 注:在倒排索引里存储的包含某个词元的文档列表都是从小到大排列的. 初始状态如下: a b c -> 4 -> 2 -> 3 6 4