private CompassTemplate compassTemplate;                  
Compass compass = compassTemplate.getCompass();
CompassSession compassSession = compass.openSession();
CompassQueryBuilder queryBuilder = compassSession.queryBuilder();
CompassBooleanQueryBuilder boolQuery = queryBuilder.bool();
boolQuery.addMust(queryBuilder.queryString("sameQuestion.ask:" + ask).toQuery());
boolQuery.addMust(queryBuilder.queryString("sameQuestion.robot:" + robotId).toQuery());
CompassHits hts = boolQuery.toQuery().hits();
if (hts.length() == 0) {
// 提问不存在
return null;
}
// 搜索一码事(一码事中已经包含了问题),获得最佳问题
SameQuestion sameQuestion = (SameQuestion) hts.data(0);
请高手分析下这段代码是干什么的.最好是一步一步的解释下,谢谢

解决方案 »

  1.   

    只看出来和HIBERNATE差不多.
    前5句就是通过session工厂等获取query.6,7句是设置查询条件.8句是查询列表 
    再下边就是判断是否查询出数据了.如果没有数据 return null.
    否则就返回列表索引的第一条
      

  2.   

    这是lucene 搜索引擎中的代码。
    用来查询索引数据。
    关键在CompassHits hts = boolQuery.toQuery().hits(); 这段,
    hts就是查询出的索引数据。
      

  3.   

    这个是 Compass 和lucene的结合。
    Compass 主要便于lucene搜索,确实有点hibernate的味道
      

  4.   

    shuai45
    能说具体点么?比如:Compass compass = compassTemplate.getCompass(); 这句话是干什么的 起到了什么作用!
    我现在要用到这个 可以我一点也不了解.我希望我能学会 起码也要知道这是干什么的. 
      

  5.   

    是compass的代码,楼主如果不知道compass的话,再给你解释也不能说清问题,建议还是找compass的资料仔细看看为好。