- 浏览: 199808 次
文章分类
最新评论
-
code_xiaoke:
session可是有30分钟有效期的还有如果在分布式的环境下 ...
Java Web 用户登陆示例代码 -
xul0038:
http://www.baidu.com
Java Web 用户登陆示例代码 -
16866:
非常棒,配置信息呢
Nginx负载均衡 -
开发小菜:
什么意思,没明白?能不能写一个例子
JS 实现DIV随浏览器窗口大小变化
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://wemyss.blogbus.com/logs/8014799.html
1.概述
Compass将lucene、Spring、Hibernate三者的起来,以很低很低的成本快速实现企业应用中的搜索功能。
HomePage: http://www.opensymphony.com/compass/
springside里用了compass来做图书搜索,快速建立的流程如下:
1.用简单的compass annotation把Book对象映射到Lucene。
2.配置compass默认提供的基于Spring MVC的Index Controller 和Search Controller。
3.编写查询结果的显示页面,将controller返回的变量显示出来。
2.Object/Search Engine Mapping的 Annotations配置
使用JDK5 的annotation 来进行OSEM(Object/Search Engine Mapping)比用xml文件按简单许多,下面就是简单的搜索类,可见@SearchableID, @SearchableProperty与@SearchableComponent 三个标记,分别代表主键、可搜索的属性与关联的,另一个可搜索的对象,另外Compass要求POJO要有默认构造函数,要实现equals()和hashcode():
详细请点击查看springside中的Product.java , Book.java, Category.java
public class Product { @SearchableId private Integer id; private Category category; private String name; private Double unitprice; @SearchableProperty(name = "name") public String getName() { return this.name; } @SearchableComponent (refAlias = "category") public Category getCategory() { return this.category; } public Double getUnitprice() { return this.unitprice; }
3. 与spring,hibernate集成配置
3.1 spring配置文件
hiberante中的sessionFactory,transactionManager相比大家也是轻车熟路了.这里还是带过(因为不牵扯稿费的问题吗^_^ ).compass已经对对spring集成做了很好的封装,让我们的使用更加简单,我们可以不为compass编写一行代码,就可以做完搜索引擎的检索.下面是compass在spring中的简明配置. 详情点击查看springside中的applicationContext-lucene.xml :
<beans>
<bean id="annotationConfiguration" class="org.compass.annotations.config.CompassAnnotationsConfiguration"></bean>
<bean id="compass" class="org.compass.spring.LocalCompassBean">
<!-- anontaition式设置 -->
<property name="classMappings">
<list>
<value>org.springside.bookstore.domain.Book</value>
</list>
</property>
<property name="compassConfiguration" ref="annotationConfiguration"/>
<property name="compassSettings">
<props>
<prop key="compass.engine.connection">file://${user.home}/springside/compass</prop>
<prop key="compass.transaction.factory">org.compass.spring.transaction.SpringSyncTransactionFactory</prop>
</props>
</property>
<property name="transactionManager" ref="transactionManager"/>
</bean>
<bean id="hibernateGpsDevice" class="org.compass.spring.device.hibernate.SpringHibernate3GpsDevice">
<property name="name">
<value>hibernateDevice</value>
</property>
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<bean id="compassGps" class="org.compass.gps.impl.SingleCompassGps" init-method="start" destroy-method="stop">
<property name="compass" ref="compass"/>
<property name="gpsDevices">
<list>
<ref local="hibernateGpsDevice"/>
</list>
</property>
</bean>
</beans>
上面要留意的配置有:
annotationConfiguration: 使用annotation配置,指定要转换的POJO如Book
compass.engine.connection : 索引文件在服务器上的存储路径.
hibernateGpsDevice: 与hibernate的绑定,用Hibernate 3 事件系统,支持Real Time Data Mirroring .经Hiberante的数据改变会自动被反射到索引里面.
3.2 web Controller的配置
两个Controller都是现成的,只要配置相关选项即可。
详情请查看springside的bookstore-servlet.xml
<bean id="indexBookController" class="org.compass.spring.web.mvc.CompassIndexController"> <property name="compassGps" ref="compassGps"/> <property name="indexView" value="/admin/indexBook.jsp"/> <property name="indexResultsView" value="/admin/indexBook.jsp"/></bean><bean id="searchBookController" class="org.compass.spring.web.mvc.CompassSearchController"> <property name="compass" ref="compass"/> <propertyname="searchView"value="/home/top.jsp"/> <property name="searchResultsView" value="/home/searchBook.jsp"/> <property name="pageSize" value="5"/></bean>
3.3 View JSP
简单搜索页面:只需要一个query 参数:
<INPUT type="text" size="20" name="query">
结果页面:
结果页面将返回几个变量,包括:
searchResults(搜索结果) 包括hits(结果)和 searchtime(耗时)
pages(分页信息) 包括page_from page_to等
command(原来的查询请求)
具体使用见springside的advancedSearch.jsp ,下面是简版的代码:
<c:if test="${not empty searchResults}"> 耗时: <c:out value="http://www.zhmy.com/${searchResults.searchTime}"/>ms <c:forEach var="hit" items="${searchResults.hits}"> <c:choose> <c:when test="${hit.alias == 'book'}"> <div class="left_content"> <a href="#" class= "title"> 《${hit.data.name}》</a> <br/> 作者:${hit.data.author}<br/> </div> </c:when> </c:choose> </c:forEach></c:if>
4.扩展高级搜索
扩展高级搜索其实很简单,SpringSide已经初步封装了加入包含以下任意单词,不包含以下任何单词,分类选择等条件及每页显示条数的确定。
如果需要更多条件:
1. 加强搜索页面,加入更多条件的显示。
2. 扩展compass的command class,接受从搜索条件页传过来的条件。 可从springside的AdvancedSearchCommand 扩展或从Compass的原类扩展。
3. 扩展compass的searchController, 将command中的变量重新处理为一个符合Lucene语法规则的query变量 即可(见springside中的AdvancedSearchController ),同时可以为搜索条件页查询图书分类列表一类的变量。
你可以从springside的AdvancedSearchController扩展,重载onSetupCommand (),参考父类的做法,加装自己的条件。重载referenceData(),把图书分类列表这种条件加入到AdvancedSearchCommand 的referenceData Map中供搜索条件页显示,例子见BookSearchController。
也可以参考BookSearchController和AdvancedSearchController的做法,完全自行扩展。
搜索引擎和网络爬虫群293961767 欢迎志同道合的朋友加入!
1.概述
Compass将lucene、Spring、Hibernate三者的起来,以很低很低的成本快速实现企业应用中的搜索功能。
HomePage: http://www.opensymphony.com/compass/
springside里用了compass来做图书搜索,快速建立的流程如下:
1.用简单的compass annotation把Book对象映射到Lucene。
2.配置compass默认提供的基于Spring MVC的Index Controller 和Search Controller。
3.编写查询结果的显示页面,将controller返回的变量显示出来。
2.Object/Search Engine Mapping的 Annotations配置
使用JDK5 的annotation 来进行OSEM(Object/Search Engine Mapping)比用xml文件按简单许多,下面就是简单的搜索类,可见@SearchableID, @SearchableProperty与@SearchableComponent 三个标记,分别代表主键、可搜索的属性与关联的,另一个可搜索的对象,另外Compass要求POJO要有默认构造函数,要实现equals()和hashcode():
详细请点击查看springside中的Product.java , Book.java, Category.java
public class Product { @SearchableId private Integer id; private Category category; private String name; private Double unitprice; @SearchableProperty(name = "name") public String getName() { return this.name; } @SearchableComponent (refAlias = "category") public Category getCategory() { return this.category; } public Double getUnitprice() { return this.unitprice; }
3. 与spring,hibernate集成配置
3.1 spring配置文件
hiberante中的sessionFactory,transactionManager相比大家也是轻车熟路了.这里还是带过(因为不牵扯稿费的问题吗^_^ ).compass已经对对spring集成做了很好的封装,让我们的使用更加简单,我们可以不为compass编写一行代码,就可以做完搜索引擎的检索.下面是compass在spring中的简明配置. 详情点击查看springside中的applicationContext-lucene.xml :
<beans>
<bean id="annotationConfiguration" class="org.compass.annotations.config.CompassAnnotationsConfiguration"></bean>
<bean id="compass" class="org.compass.spring.LocalCompassBean">
<!-- anontaition式设置 -->
<property name="classMappings">
<list>
<value>org.springside.bookstore.domain.Book</value>
</list>
</property>
<property name="compassConfiguration" ref="annotationConfiguration"/>
<property name="compassSettings">
<props>
<prop key="compass.engine.connection">file://${user.home}/springside/compass</prop>
<prop key="compass.transaction.factory">org.compass.spring.transaction.SpringSyncTransactionFactory</prop>
</props>
</property>
<property name="transactionManager" ref="transactionManager"/>
</bean>
<bean id="hibernateGpsDevice" class="org.compass.spring.device.hibernate.SpringHibernate3GpsDevice">
<property name="name">
<value>hibernateDevice</value>
</property>
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<bean id="compassGps" class="org.compass.gps.impl.SingleCompassGps" init-method="start" destroy-method="stop">
<property name="compass" ref="compass"/>
<property name="gpsDevices">
<list>
<ref local="hibernateGpsDevice"/>
</list>
</property>
</bean>
</beans>
上面要留意的配置有:
annotationConfiguration: 使用annotation配置,指定要转换的POJO如Book
compass.engine.connection : 索引文件在服务器上的存储路径.
hibernateGpsDevice: 与hibernate的绑定,用Hibernate 3 事件系统,支持Real Time Data Mirroring .经Hiberante的数据改变会自动被反射到索引里面.
3.2 web Controller的配置
两个Controller都是现成的,只要配置相关选项即可。
详情请查看springside的bookstore-servlet.xml
<bean id="indexBookController" class="org.compass.spring.web.mvc.CompassIndexController"> <property name="compassGps" ref="compassGps"/> <property name="indexView" value="/admin/indexBook.jsp"/> <property name="indexResultsView" value="/admin/indexBook.jsp"/></bean><bean id="searchBookController" class="org.compass.spring.web.mvc.CompassSearchController"> <property name="compass" ref="compass"/> <propertyname="searchView"value="/home/top.jsp"/> <property name="searchResultsView" value="/home/searchBook.jsp"/> <property name="pageSize" value="5"/></bean>
3.3 View JSP
简单搜索页面:只需要一个query 参数:
<INPUT type="text" size="20" name="query">
结果页面:
结果页面将返回几个变量,包括:
searchResults(搜索结果) 包括hits(结果)和 searchtime(耗时)
pages(分页信息) 包括page_from page_to等
command(原来的查询请求)
具体使用见springside的advancedSearch.jsp ,下面是简版的代码:
<c:if test="${not empty searchResults}"> 耗时: <c:out value="http://www.zhmy.com/${searchResults.searchTime}"/>ms <c:forEach var="hit" items="${searchResults.hits}"> <c:choose> <c:when test="${hit.alias == 'book'}"> <div class="left_content"> <a href="#" class= "title"> 《${hit.data.name}》</a> <br/> 作者:${hit.data.author}<br/> </div> </c:when> </c:choose> </c:forEach></c:if>
4.扩展高级搜索
扩展高级搜索其实很简单,SpringSide已经初步封装了加入包含以下任意单词,不包含以下任何单词,分类选择等条件及每页显示条数的确定。
如果需要更多条件:
1. 加强搜索页面,加入更多条件的显示。
2. 扩展compass的command class,接受从搜索条件页传过来的条件。 可从springside的AdvancedSearchCommand 扩展或从Compass的原类扩展。
3. 扩展compass的searchController, 将command中的变量重新处理为一个符合Lucene语法规则的query变量 即可(见springside中的AdvancedSearchController ),同时可以为搜索条件页查询图书分类列表一类的变量。
你可以从springside的AdvancedSearchController扩展,重载onSetupCommand (),参考父类的做法,加装自己的条件。重载referenceData(),把图书分类列表这种条件加入到AdvancedSearchCommand 的referenceData Map中供搜索条件页显示,例子见BookSearchController。
也可以参考BookSearchController和AdvancedSearchController的做法,完全自行扩展。
搜索引擎和网络爬虫群293961767 欢迎志同道合的朋友加入!
发表评论
-
java实现动态切换上网IP (ADSL拨号上网) java开发
2013-04-24 10:06 1293动态切换IP的实现主是也由Windows的rasdial命令提 ... -
JAVA字符串处理函数
2013-04-12 09:21 1125Java中的字符串也是一连串的字符。但是与许多其他的计算机语 ... -
(转)Lucene打分规则与Similarity模块详解
2013-02-06 14:08 1200搜索排序结果的控制 Lu ... -
Lucene3.0详解
2013-02-01 10:57 1409★第一部分:概述 1. 我 ... -
Java Web 用户登陆示例代码
2013-02-01 09:56 58109实现功能: 1、用户登陆、注销 2、利用session记 ... -
Java对数函数及Java对数运算
2013-02-01 09:47 6797Java对数函数的计算方法非常有问题,然而在API中却有惊人 ... -
Lucene为不同字段指定不同分词器(转)
2013-01-31 17:34 3459在lucene使用过程中,如 ... -
域名管理与解析原理 — 《Java邮件开发详解》读书笔记
2013-01-31 14:56 1704一 基本概念 1. 域名:域名是由圆点分开一串单词或缩写组 ... -
优秀的Java工程师需要掌握的10项技能
2013-01-31 14:04 1852编程专业相对于计算机领域其他专业来讲,是一门比较难以修炼的专业 ... -
Web开发入门不得不看
2013-01-28 17:31 1034如今,各种互联网的Web ... -
MVC框架的映射和解耦
2013-01-25 21:37 832最近在写一个业务上用到的框架,回想起接触过的一些MVC框架, ... -
JAVA发送EMAIL的例子
2013-07-09 09:44 903import javax.mail.*; ... -
SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎
2012-11-19 09:55 1384前两天看到了一个中国新闻网,这个网站的搜索form的actio ... -
Lucene多字段搜索
2012-11-19 09:53 1031最近在学习Lucene的过程中遇到了需要多域搜索并排序的问题, ... -
lucene之sort
2012-11-16 15:06 1089package cn.zqh.lucene.sort; im ... -
Nginx负载均衡
2012-11-16 11:45 7655最近迷上了Nginx,真实麻雀虽小,五脏俱全..功能实在强大. ... -
Lucene相关度排序的调整
2012-11-16 11:38 1729Lucene的搜索结果默认按 ... -
HashSet重复元素判断
2012-10-15 16:37 9139HashSet不能添加重复的元素,当调用add(Object) ... -
JAVA提高教程(2)-认识Set集合之HashSet
2012-10-09 09:44 973集合在Java里面的作用非 ... -
使用solr搭建你的全文检索
2012-09-28 16:34 1045Solr 是一个可供企业使用的、基于 Lucene 的开箱即用 ...
相关推荐
标题 "整合compass2.0 spring hibernate示例源程序" 提供了我们即将探讨的核心内容,即一个结合了Compass 2.0、Spring和Hibernate的集成示例。这个项目旨在展示如何在Java应用程序中有效地利用这三个强大的开源框架...
三者结合可以构建高效、灵活且可搜索的Java应用。 描述中给出的链接指向了 CSDN 博客的一个文章,该文章可能详细解释了如何在 Spring 3 中集成 Compass 和 Hibernate,以实现数据库数据的全文搜索功能。CSDN 是中国...
Compass将lucene、Spring、Hibernate三者的起来,以很低很低的成本快速实现企业应用中的搜索功能。 ... 下面是compass在spring中的简明配
接下来,我们将深入探讨如何在项目中整合Compass、Hibernate和Spring。 Compass是一个基于Lucene的全文搜索引擎,它为Java应用程序提供了一种简单的方式来实现对数据的快速检索。Compass通过元数据映射机制,可以将...
spring+hibernate+jpa+struts1+struts2+springmvc+jquery+freemaker 学习笔记 Compass将lucene、Spring、Hibernate三者结合
标题 "compass-2.2.0+hibernate-3.2+struts-2.1.8.1+spring-framework-2.5.4" 指的是一个集成开发环境,它结合了四个关键的技术组件:Compass、Hibernate、Struts 2 和 Spring Framework,这些都是Java Web开发中的...
Struts、Hibernate、Spring、JPA、Lucene、JBPM和Compass是Java开发中常用的一系列技术,它们各自在不同的领域发挥着重要作用。这里我们将深入探讨这些技术以及如何将它们整合在一起进行配置。 1. **Struts**:...
通过以上步骤和技巧,我们可以将Compass有效地集成到Struts2、Spring和Hibernate的环境中,实现高效、强大的全文搜索功能。这将极大地提升Web应用的用户体验,特别是对于内容丰富的网站或信息管理系统,全文搜索功能...
Struts2、Spring、Hibernate和Compass是Java Web开发中常用的四大框架,它们各自负责不同的职责,协同工作可以构建高效、灵活的企业级应用。这里我们主要讨论如何将这些技术结合在一起,实现一个简单的搜索引擎功能...
Struts2、Hibernate、Spring 和 Compass 是Java Web开发中四个重要的框架和技术,它们共同构建了一个强大的企业级应用架构。在本项目中,开发者利用SSH2(即Struts2、Hibernate和Spring的组合)作为基础框架,并引入...
标题 "spring + hibernate + struts2 + compass2.1" 暗示了这是一个关于构建基于Java的Web应用程序的经典组合。在这个框架中,Spring作为核心的依赖注入(DI)和面向切面编程(AOP)容器,Hibernate是用于对象关系...
struts2 + spring2.5 + hibernate 3.2 + lucene 2.4 + compass 2.0 包含所有jar包,按readme.txt导入并运行即可 开始不用分了................
3. **jar包**:项目依赖的各种库,包括Compass、Lucene、SSH框架和其他必需的第三方库。 4. **SQL脚本**:用于初始化数据库的脚本,可能是数据表结构或初始数据的导入。 5. **Web应用目录**:可能包含WEB-INF目录,...
在IT行业中,STRUTS、SPRING和HIBERNATE是三个非常重要的开源框架,它们分别专注于MVC(模型-视图-控制器)架构、依赖注入以及对象关系映射。而COMPASS则是一个基于Lucene的搜索引擎库,用于增强Java应用的全文检索...
使用compass+lucene实现简单的全文检索功能 里面整合了spring2.5、hibernate3.2、struts2.0,是对数据库进行全文检索的一个非常好的demo的所有jar包组合! 对研究基于数据库检索的java开源搜索引擎的朋友有很大的...
学生时期做的电子商务系统,主要用到的技术有Struts2,Hibernate,Spring2,Lucene,Compass,FreeMarker,OsCache缓存技术,数据库用的是Mysql,要去修改conf下面的配置文件
Struts2是一个流行的MVC框架,Spring是核心的依赖注入框架,Hibernate是ORM(对象关系映射)解决方案,而Compass则是一个基于Lucene的全文搜索引擎库,专门用于Java应用。接下来,我们将深入探讨这些组件以及它们...
它不仅利用了顶级的Lucene搜索引擎的强大功能,还融合了诸如Hibernate和Spring等流行框架的优势,从而为开发者提供了一个更加便捷的途径来实现数据模型和数据源的搜索能力。Compass的核心目标在于减少编码工作量,...