`
osacar
  • 浏览: 212529 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

compass和spring 集成实现实时搜索

阅读更多
1.增加compass2.20的jar包
2.用annotation在pojo类里面增加实现搜索的功能
Person类    
import org.compass.annotations.Index;    
import org.compass.annotations.Searchable;    
import org.compass.annotations.SearchableId;    
import org.compass.annotations.SearchableProperty;    
import org.compass.annotations.Store;    
   
   
@Searchable   
public class Person {    
    @SearchableId   
    private int id;    
    //@SearchableProperty(name="name") --- 这个默认的是分词,存储    
    @SearchableProperty(name="name")    
    private String name;    
    //不分词,用下面的annotation定义    
    @SearchableProperty(index = Index.UN_TOKENIZED, store = Store.YES)    
    private String sex;    
    @SearchableProperty(name="adress")    
    private String address;    
    @SearchableProperty(index = Index.UN_TOKENIZED, store = Store.YES)    
    private String duty;    
    @SearchableProperty(index = Index.UN_TOKENIZED, store = Store.YES)    
    private String phone;    
    @SearchableProperty(name="description")    
    private String description;    
   
    public int getId() {    
        return id;    
     }    
   
    public void setId(int id) {    
        this.id = id;    
     }    
   
    public String getName() {    
        return name;    
     }    
   
    public void setName(String name) {    
        this.name = name;    
     }    
   
    public String getSex() {    
        return sex;    
     }    
   
    public void setSex(String sex) {    
        this.sex = sex;    
     }    
   
    public String getAddress() {    
        return address;    
     }    
   
    public void setAddress(String address) {    
        this.address = address;    
     }    
   
    public String getDuty() {    
        return duty;    
     }    
   
    public void setDuty(String duty) {    
        this.duty = duty;    
     }    
   
    public String getPhone() {    
        return phone;    
     }    
   
    public void setPhone(String phone) {    
        this.phone = phone;    
     }    
   
    public String getDescription() {    
        return description;    
     }    
   
    public void setDescription(String description) {    
        this.description = description;    
     }    
   
}   



3.增加一个applicationContext-compass.xml文件,配置compass

<?xml version="1.0" encoding="UTF-8"?>    
   
<beans xmlns="http://www.springframework.org/schema/beans"   
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
     xsi:schemaLocation=" http://www.springframework.org/schema/beans   http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"   
    default-lazy-init="true">    
   
   
     <bean id="annotationConfiguration"   
        class="org.compass.annotations.config.CompassAnnotationsConfiguration">    
     </bean>    
   
   
     <bean id="compass" class="org.compass.spring.LocalCompassBean">    
         <!--    
         <property name="resourceDirectoryLocations">    
             <list>    
                 <value>classpath:com/oa</value>    
             </list>    
         </property>    
            
   
         -->    
         <property name="connection">    
             <value>/lucene/indexes</value>    
         </property>    
            
         <property name="classMappings">    
             <list>    
                 <value>com.oa.model.Person</value>    
             </list>    
         </property>    
            
         <property name="compassConfiguration" ref="annotationConfiguration" />    
            
         <property name="transactionManager" ref="transactionManager" />    
            
         <property name="compassSettings">    
             <props>    
                 <!-- 指定索引的路径 -->    
                 <prop key="compass.engine.connection">e:/compass</prop>    
                 <!-- 指定分词器 -->    
                 <prop key="compass.engine.analyzer.default.type">net.paoding.analysis.analyzer.PaodingAnalyzer</prop>    
                 <prop key="compass.transaction.factory">    
                     org.compass.spring.transaction.SpringSyncTransactionFactory    
                 </prop>    
                      
             </props>    
         </property>    
            
     </bean>    
   
   
     <bean id="hibernateGpsDevice"   
        class="org.compass.gps.device.hibernate.HibernateGpsDevice">    
         <property name="name">    
             <value>hibernateDevice</value>    
         </property>    
         <property name="sessionFactory" ref="sessionFactory" />    
         <property name="mirrorDataChanges">    
             <value>true</value>    
         </property>    
     </bean>    
     <!-- 同步更新索引 通过compassGps-->    
     <bean id="compassGps" class="org.compass.gps.impl.SingleCompassGps"   
         init-method="start" destroy-method="stop">    
         <property name="compass" ref="compass" />    
         <property name="gpsDevices">    
             <list>    
                 <bean    
                    class="org.compass.spring.device.SpringSyncTransactionGpsDeviceWrapper">    
                     <property name="gpsDevice" ref="hibernateGpsDevice" />    
                 </bean>    
             </list>    
         </property>    
     </bean>    
   
   
     <bean id="compassTemplate"   
        class="org.compass.core.CompassTemplate">    
         <property name="compass" ref="compass" />    
     </bean>    
   
     <!-- 定时重建索引(利用quartz)或随Spring ApplicationContext启动而重建索引 -->    
     <bean id="compassIndexBuilder"   
        class="com.struts2.service.impl.CompassIndexBuilder"   
         lazy-init="false">    
         <property name="compassGps" ref="compassGps" />    
         <property name="buildIndex" value="true" />    
         <property name="lazyTime" value="10" />    
     </bean>    
        
   
</beans>   

分享到:
评论

相关推荐

    COMPASS+spring构建自己的搜索引擎.pdf

    总的来说,构建基于Compass和Spring的搜索引擎涉及理解Compass的核心概念,如OSEM、配置方式和API,以及如何利用Spring的集成优势简化开发流程。通过这种方式,开发者可以快速、高效地实现一个功能完备的全文搜索...

    Spring ,JPA,Compass使用注解开发的博客站内搜索

    接下来,为了实现搜索功能,我们需要创建一个Service层的接口和实现类,这个类会调用Compass的API来执行搜索查询。搜索方法可能接受关键词参数,然后使用Compass的QueryBuilder或直接写入Lucene的Query语法来构建...

    struts2+spring2.5+hibernate3.26+compass2.1搜索引擎简单实现(无jar包)

    为了实现搜索功能,你需要创建一个搜索Action,该Action可以调用由Spring管理的Service,Service再通过CompassTemplate执行查询。你可以使用Compass提供的Gps接口或者自定义查询语句来实现对索引的检索。检索结果...

    整合compass2.0 spring hibernate示例源程序

    总结来说,这个示例项目是一个完整的Java应用框架,展示了如何优雅地集成Compass 2.0、Spring和Hibernate,实现一个功能强大的、支持全文搜索的持久层解决方案。它不仅有助于理解这三个框架的基本用法,还提供了实践...

    基于Compass2.2与Spring 结合建立索引的实例

    3. **实现服务层**:创建服务层接口及其实现类,利用Spring的注入机制注入Compass的bean,实现对索引的操作。 #### 五、实际应用案例 假设我们有一个项目管理系统,需要实现项目的快速搜索功能。我们可以采用上述...

    JAVA 全文搜索 struts2+spring+hibernte+compass整合记录

    在本项目中,"JAVA 全文搜索 struts2+spring+hibernate+compass整合记录" 是一个关于如何在Java环境下集成四个关键组件来实现全文搜索引擎的实践教程。Struts2是一个流行的MVC框架,Spring是核心的依赖注入框架,...

    compass_hibernate_spring3.zip

    描述中给出的链接指向了 CSDN 博客的一个文章,该文章可能详细解释了如何在 Spring 3 中集成 Compass 和 Hibernate,以实现数据库数据的全文搜索功能。CSDN 是中国知名的开发者社区,其中的文章通常涵盖了各种编程...

    Lucene+compass+spring+jdbc+庖丁的一个例子

    接着,他们可能会展示如何通过Spring的依赖注入来调用搜索服务,并使用Lucene和Compass提供的API来执行查询。最后,这个例子可能会涵盖如何优化搜索性能,以及如何处理索引和查询时可能出现的问题。 由于没有具体的...

    compass_hibernate_spring2.zip

    描述中的链接指向了 CSDN 博客上的一篇文章,虽然具体内容无法在当前环境中查看,但我们可以推测这篇文章可能讲述了如何在 Spring 应用中集成 Compass 和 Hibernate,实现全文检索功能。通常,这样的集成会包括以下...

    STRUTS SPRING COMPASS 实例

    开发者可能需要创建Action类来处理业务逻辑,配置Spring的bean来管理依赖,设置Hibernate的映射文件以定义数据库关系,同时在Compass中配置索引以实现搜索功能。 集成这些框架通常涉及以下步骤: - 配置Struts的...

    compass_hibernate_spring.zip

    这样,我们就完成了Compass、Hibernate和Spring的整合,实现了数据的高效检索。 在"compass_hibernate_spring.zip"中,你应该能够找到一个完整的项目结构,包括配置文件、实体类、服务层代码等。通过分析和运行这个...

    ssh+compass实现站内搜索分页.rar

    通过以上步骤,你可以在SSH框架下成功集成Compass实现站内搜索分页。这一过程涉及到Java Web开发的多个层面,包括MVC架构、数据库操作、全文检索以及用户体验设计。熟练掌握这些技能将有助于构建高效且功能丰富的Web...

    compass索引插件demo

    4. **事务管理**:由于Compass可以与Spring集成,所以它可以利用Spring的事务管理,确保索引更新与数据操作在同一事务中完成,保证数据一致性。 **集成步骤** 1. **引入依赖**:在项目中添加Compass和SSH框架的...

    struts2 hibernate spring compass全文检索

    在本项目中,开发者利用SSH2(即Struts2、Hibernate和Spring的组合)作为基础框架,并引入Compass来实现全文检索功能,以此提升应用程序的数据查询效率和用户体验。 Struts2 是一个基于MVC(模型-视图-控制器)设计...

    S2SH+compass (实现站内全文检索)

    标题中的"S2SH+compass"指的是一个基于Struts2(S),Spring(S)和Hibernate(H)这三种开源框架的Java Web应用,再加上Compass搜索引擎来实现站内全文检索的功能。这种组合常用于构建复杂的企业级应用,因为它提供...

    compass-2.2.0+hibernate-3.2+struts-2.1.8.1+spring-framework-2.5.4

    标题 "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开发中的...

    SSH2整合compass做搜索引挚

    5. 实现搜索功能:在Struts2的动作类中,调用Compass提供的API进行搜索,并将结果返回到视图层展示。 6. 错误处理和优化:测试和调试搜索功能,处理可能出现的问题,如索引丢失、搜索性能低下等。 通过上述整合,...

Global site tag (gtag.js) - Google Analytics