快速业务通道

再谈compass:集成站内搜索 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-21
;    }   };   ct.execute(action);   }   /** 索引查询 **/   public List<ProductInfo> find(final String keywords) {   CompassTemplate ct = new CompassTemplate(compass);   return ct.execute(new CompassCallback<List<ProductInfo>>() {    public List<ProductInfo> doInCompass(CompassSession session)     throws CompassException {    List<ProductInfo> result = new ArrayList<ProductInfo>();    CompassQueryBuilder queryBuilder = session.queryBuilder();    CompassHits hits = null; // session.find(query);    /** 在所有字段中查询 **/    CompassQuery allPropertyQuery = queryBuilder.queryString(keywords).toQuery();    hits = allPropertyQuery.hits();    /** 在指定字段中查询 **/    // CompassQuery query = queryBuilder.term("name", keywords);    // hits = query.hits();    /** 指定范围查询 **/ //   CompassQuery dateRangeQuery = //   queryBuilder.between("postTime",startTime, endTime, true); //   hits = queryBuilder.bool() //   .addMust(allPropertyQuery) //   .addMust(dateRangeQuery) //   .toQuery() //   .hits(); //  System.out.println("---------");    for (int i = 0; i < hits.length(); i++) {     ProductInfo p = (ProductInfo) hits.data(i);     /** 如果进行高亮的属性中没有出现关键字, 则返回null **/ //   String ht = hits.highlighter(i).fragment("name"); //   if (ht != null) { //   p.setName(ht); //   } //   String hc = hits.highlighter(i).fragment("code"); //   if (hc != null) { //   p.setCode(hc); //   }     result.add(p);    }    return result;    }   });   }

再谈compass:集成站内搜索(7)

时间:2011-01-05 javaeye lqw8668

控制层

Java代码

@Controller("/search/gosearch") public class SearchAction extends Action {   @Resource(name = "searchServiceBean")   private SearchService SearchService;   @Override   public ActionForward execute(ActionMapping mapping, ActionForm form,     HttpServletRequest request, HttpServletResponse response)    throws Exception {   String keywords=request.getParameter("word").trim();   if(keywords==null||"".equals(keywords)){    return mapping.findForward("noproduct");   }   System.out.println("------"+keywords);   List<ProductInfo> list = SearchService.find(keywords);   request.setAttribute("word", keywords);   request.setAttribute("product",list);      if(list.isEmpty()){       return mapping.findForward("noproduct");      }else{       return mapping.findForward("list");      }   } } 

junit测试

Java代码

public class SearchTest {   private static AbstractApplicationContext context;   @BeforeClass    public static void setUpBeforeClass() throws Exception {   try {  

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号