- 浏览: 194846 次
文章分类
最新评论
-
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 1217动态切换IP的实现主是也由Windows的rasdial命令提 ... -
JAVA字符串处理函数
2013-04-12 09:21 1030Java中的字符串也是一连串的字符。但是与许多其他的计算机语 ... -
(转)Lucene打分规则与Similarity模块详解
2013-02-06 14:08 1128搜索排序结果的控制 Lu ... -
Lucene3.0详解
2013-02-01 10:57 1339★第一部分:概述 1. 我 ... -
Java Web 用户登陆示例代码
2013-02-01 09:56 57997实现功能: 1、用户登陆、注销 2、利用session记 ... -
Java对数函数及Java对数运算
2013-02-01 09:47 6718Java对数函数的计算方法非常有问题,然而在API中却有惊人 ... -
Lucene为不同字段指定不同分词器(转)
2013-01-31 17:34 3370在lucene使用过程中,如 ... -
域名管理与解析原理 — 《Java邮件开发详解》读书笔记
2013-01-31 14:56 1652一 基本概念 1. 域名:域名是由圆点分开一串单词或缩写组 ... -
优秀的Java工程师需要掌握的10项技能
2013-01-31 14:04 1788编程专业相对于计算机领域其他专业来讲,是一门比较难以修炼的专业 ... -
Web开发入门不得不看
2013-01-28 17:31 995如今,各种互联网的Web ... -
MVC框架的映射和解耦
2013-01-25 21:37 785最近在写一个业务上用到的框架,回想起接触过的一些MVC框架, ... -
JAVA发送EMAIL的例子
2013-07-09 09:44 863import javax.mail.*; ... -
SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎
2012-11-19 09:55 1337前两天看到了一个中国新闻网,这个网站的搜索form的actio ... -
Lucene多字段搜索
2012-11-19 09:53 927最近在学习Lucene的过程中遇到了需要多域搜索并排序的问题, ... -
lucene之sort
2012-11-16 15:06 1041package cn.zqh.lucene.sort; im ... -
Nginx负载均衡
2012-11-16 11:45 7533最近迷上了Nginx,真实麻雀虽小,五脏俱全..功能实在强大. ... -
Lucene相关度排序的调整
2012-11-16 11:38 1675Lucene的搜索结果默认按 ... -
HashSet重复元素判断
2012-10-15 16:37 9093HashSet不能添加重复的元素,当调用add(Object) ... -
JAVA提高教程(2)-认识Set集合之HashSet
2012-10-09 09:44 932集合在Java里面的作用非 ... -
使用solr搭建你的全文检索
2012-09-28 16:34 989Solr 是一个可供企业使用的、基于 Lucene 的开箱即用 ...
相关推荐
Compass将lucene、Spring、Hibernate三者的起来,以很低很低的成本快速实现企业应用中的搜索功能。 ... 下面是compass在spring中的简明配
spring+hibernate+jpa+struts1+struts2+springmvc+jquery+freemaker 学习笔记 Compass将lucene、Spring、Hibernate三者结合
java struts spring hibernate COMPASS+lucene搜索引索
Struts+Hibernate+spring+jpa+lucene+jbpm+compass配置文件
struts2 + spring2.5 + hibernate 3.2 + lucene 2.4 + compass 2.0 包含所有jar包,按readme.txt导入并运行即可 开始不用分了................
使用compass+lucene实现简单的全文检索功能 里面整合了spring2.5、hibernate3.2、struts2.0,是对数据库进行全文检索的一个非常好的demo的所有jar包组合! 对研究基于数据库检索的java开源搜索引擎的朋友有很大的...
学生时期做的电子商务系统,主要用到的技术有Struts2,Hibernate,Spring2,Lucene,Compass,FreeMarker,OsCache缓存技术,数据库用的是Mysql,要去修改conf下面的配置文件
struts2-spring-compass Struts2整合Spring3、Hibernate、Compass实现全文检索(基于lucene2.4.1和极易中文分词器)
Built on top of the amazing Lucene Search Engine, Compass integrates seamlessly to popular development frameworks like Hibernate and Spring. Compass is a powerful, transactional Object to Search ...
自己用Lucene写的贴吧,因为用的是Lucene3.0,Compass不支持,所以没用Compass,整合了S2SH(Struts2+Spring2.5+Hibernate3.6)
本资源是struts2 + spring2.5 + hibernate 3.2 + lucene 2.4 + compass 2.0整合实例,可以为初学入门者,提供个参考,本人也是网上找的,感觉很不错(因其中所用的jar文件太大,无法上传,大家可以自己添加各框架...
Compass 框架以声明方式为您的应用程序堆栈启用了搜索引擎语义的强大功能。 Compass 建立在令人惊叹的 Lucene 搜索引擎之上,无缝集成到流行的开发框架,如 Hibernate 和 Spring。
J.Office是基于J2EE,Spring,Struts2,EXT3,Hibernate,Compass,Lucene,Jasper Report,Jbpm4.4优秀技术整合,支持windows、Linux、Unix**台运行。数据库支持Oracle、Sql server、Mysql、 DB2等多种数据库,文档支持全文...
lucene-core.jar 、lucene-highlighter.jar 、compass-index-patch.jar、 compass-2.1.0.jar 是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎 json-lib-2.2.3-jdk15.jar json和java转化的辅助工具 ...
lucene-core.jar 、lucene-highlighter.jar 、compass-index-patch.jar、 compass-2.1.0.jar 是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎 json-lib-2.2.3-jdk15.jar json和java转化的辅助工具 ...
同时一个mail note将被发送给消息发送者,发送一个e-mail通知给由recipient参数确定的e-mail账号,查询mail 服务器的会话…… 还包括消息客户端程序,通过连接创建会话。创建发送者和映射消息。发送消息,同时对...
同时一个mail note将被发送给消息发送者,发送一个e-mail通知给由recipient参数确定的e-mail账号,查询mail 服务器的会话…… 还包括消息客户端程序,通过连接创建会话。创建发送者和映射消息。发送消息,同时对...
Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java...
Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java...