本人刚开始学习compass,碰到几个问题,觉得应该是比较简单的,但是网上也找了,文档也找了,还是没解决,求大侠们帮帮忙,不甚感激
比如我有两个类,Book 和 Publisher:
我对这两个类分别建立了索引:
CompassAnnotationsConfiguration comAnnConfig = new CompassAnnotationsConfiguration();
comAnnConfig.setConnection(FILEPATH);
comAnnConfig.addClass(Book.class);
comAnnConfig.addClass(Publisher.class);
compass = comAnnConfig.buildCompass();然后检索的时候我如果直接用关键字去查:comSess.find("keyWord");
会只查到Book里的记录(两个类所建立的索引里都有包含"keyWord"的记录),没有查Publisher。
所以我改成:
CompassQueryBuilder queryBuilder = comSess.queryBuilder();
CompassQuery query1 = queryBuilder.alias(Book.class.getSimpleName());
CompassQuery query2 = queryBuilder.alias(Publisher.class.getSimpleName());
CompassQuery query3 = queryBuilder.queryString(keyWord).toQuery();  //按关键字查找
CompassBooleanQueryBuilder booQueryBuilder = queryBuilder.bool();
CompassQuery query4 = booQueryBuilder.addShould(query1).addShould(query2).addMust(query3).toQuery();
CompassHits ch = query4.hits();结果还是一样,只在Book建立的索引搜出结果,哪怕把query4的addShould(query1)去掉,还是会搜出Book的记录。
很是不能理解,请问怎么指定一种(比如只在Publisher中搜索)搜索,又怎么在两个类中都搜索,求教。
请问怎么理解谢谢大家了。