SSH集成lucene在操纵实体同时自动对索引进行增删改
2012-09-14 17:54
218 查看
最近在做SSH集成Compass的时候可以在实体保存的时候自动将实体添加到索引文件 觉得非常的爽,但网上说Compass已经多年不更新了, 不再对lucene3.0以上的版本进行支持 且Compass效率比lucene效率差25%(有人做了测试) 所以心里很失落啊!所以转而研究lucene!
搜索了一下网上关于SSH集成lucene的例子 没有关于保存实体同时对添加实体到索引文件中去的例子,后来自己用Spring的后置通知实验了一下 完成了自动完成索引保存 与网友分享一下。
说明:我的lucene工具类是从开源社区下载的(LuceneIndexUtils.java 所有需要索引的类都要实现 SearchEnabled.java 这个接口 开源社区可以下载)
我的Spring AOP配置如下:
由于Spring的事务传播属性 可以保证保存实体和建立索引都是在一个事务中进行的 如果将①处注释去掉 就可以验证 所以不用担心保存实体不成功 添加索引失败事务不会滚问题
搜索了一下网上关于SSH集成lucene的例子 没有关于保存实体同时对添加实体到索引文件中去的例子,后来自己用Spring的后置通知实验了一下 完成了自动完成索引保存 与网友分享一下。
说明:我的lucene工具类是从开源社区下载的(LuceneIndexUtils.java 所有需要索引的类都要实现 SearchEnabled.java 这个接口 开源社区可以下载)
我的Spring AOP配置如下:
import org.aspectj.lang.annotation.AfterReturning; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Pointcut; import cn.itcast.util.LuceneIndexUtils; import cn.itcast.util.SearchEnabled; @Aspect public class ObjectAop { //拦截cn.itcast.service.impl包(这个包下的类都是对数据库操作的类如save、delete、update)下面的所有返回值为void的类 @Pointcut("execution(void cn.itcast.service.impl..*.*(..))") private void anyMethod() {} //执行后置通知的方法要求参数名称是entity @AfterReturning(pointcut = "anyMethod()&&args(entity)") public void doAfterReturning(JoinPoint point,SearchEnabled entity) throws Exception { //如果是SearchEnabled的实例 就进行索引的添加 当然也可进行删除修改 //拦截到执行的方法 String methodName = point.getSignature().getName(); //通过这种拦截限制 拦截到的肯定是add save update Method method = LuceneIndexUtils.class.getMethod(methodName, new Class[]{SearchEnabled.class}); //执行LuceneIndexUtils的add、save、update 方法 method.invoke(null, entity); //也可以通过下面的方式执行 point.getArgs() 获取到拦截方法的参数 是个Object数组; //method.invoke(null, point.getArgs()); ①//throw new RuntimeException(); } }
由于Spring的事务传播属性 可以保证保存实体和建立索引都是在一个事务中进行的 如果将①处注释去掉 就可以验证 所以不用担心保存实体不成功 添加索引失败事务不会滚问题
相关文章推荐
- 在HTML属性中,会自动对实体字符进行转义。
- 保存信息时调用luceneDao中的save方法产生索引,搜索时调用search依据进行查询
- Linq To Sql模式中自动生成T-SQL增删改操作系列~PropertyChanged事件实现在子类中记录属性的变化,在基类中进行统一处理
- 【Lucene4.8教程之一】使用Lucene4.8进行索引及搜索的基本操作
- 用Lucene对文档进行索引搜索
- lucene对index索引中的document进行修改示例
- Lucene增量索引索引库自动更新
- 用expect实现ssh自动登录对服务器进行批量管理
- JS判断来路是否是百度等搜索索引进行弹窗或自动跳转的实现代码
- ssh如果对实体进行了修改,但不希望其修改映射到数据库中,修改不要放在service中
- mybatis 之 generator插件使用 集成到了eclipse 自动生成实体,example,mapper
- Linux配置SSH公钥认证与Jenkins远程登录进行自动发布
- lucene索引的增删改(增量索引)
- lucene进行索引的建议
- 利用 Oracle EM 企业管理器 进行oracle SQL的优化(自动生成索引)
- 使用Lucene对建立的索引进行搜索
- ssh自动连接 (密钥对),同时ssh控制多台主机,两台交互式控制
- 使用 Ant 集成 IBM Security AppScan Standard 进行自动测试
- 使用 svn+maven+jenkins(hudson)+Publish Over SSH plugins 构建持续集成及自动远程发布体系
- 【Lucene4.8教程之一】使用Lucene4.8进行索引及搜索的基本操作 2014-06-11 10:47 3130人阅读 评论(1) 收藏