谈谈compass和sorl 的比较
想请各位大牛谈谈compass和solr的比较?
不要说compass支持索引事务处理这么简单的东西。想了解一下compass和sorl掌握的难度,
现在企业的应用的情况以及大家一般都是用什么东西来做搜索引擎的,compass or solr or lucnene?
前些天时间自己用compass 搞了个搜索的东西,那个真不好用,例子非常少。。目前为止还有很多没搞定
刚才看了下solr 文档那个感觉比compass详细多了,等下看看他的例子,compass的例子 跑不起来。
如果用纯lucene的话,我怎么感觉比用这么些个框架还要好实现,最起码网上的资料非常多。
虽然用纯lucene写起来代码比较繁琐,最起码遇到问题的时候还有个参考,可以找找,compass..? 没找到
大家说说自己的意见看看。
第二步:
使用annotatio声明要索引的object,如下所示,自己根据需要进行设置
相关文档 参考:http://www.compass-project.org/docs/2.2.0M2/reference/html/core-osem.html#core-osem-searchableclasses
public class InfomationSearchServiceImpl implements InfomationSearchService { private Compass compass; public Compass getCompass() { return compass; } public void setCompass(Compass compass) { this.compass = compass; } /* * (non-Javadoc) * * @see * com.tourye.infomation.compass.InfomationSearchService#search(java.lang * .String, int, int) */ public CompassSearchResults search(String query, int page, int pageSize) throws Exception { CompassSession session = compass.openSession(); try { session.beginTransaction(); //构建compass查询编辑器 CompassQueryBuilder querybuilder = session.queryBuilder(); CompassQuery cq = null; CompassSearchCommand csc = null; //声明查询条件,query是查询字符串 if (StringUtils.isNotEmpty(query)) { cq = querybuilder.bool().addMust(querybuilder.spanEq("status", 1)).addMust( querybuilder.queryString(query).toQuery()).toQuery(); cq.addSort("approvetime", CompassQuery.SortDirection.REVERSE); csc = new CompassSearchCommand(cq, new Integer(Math.max(0, page - 1))); } else { csc = new CompassSearchCommand(query.trim()); } // 搜索命令InfomationSearchHelper和CompassSearchHelper相同,自己可以实现 InfomationSearchHelper searchHelper = new InfomationSearchHelper(compass, pageSize); CompassSearchResults searchResults = searchHelper.search(csc); return searchResults; } finally { if (session != null) session.close(); } }}