`
kong0itey
  • 浏览: 308321 次
社区版块
存档分类
最新评论

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

 
阅读更多

   本实例建立在ssh结构下,利用compass2.2。

   1 要建立的索引类(只要是POJO的实体类就可以)

   package com.cgb.ky.resources.model;
  public class ProjectApply implements java.io.Serializable {

   private String id;

   //项目名称
   private String projectName="";   
   //申请人姓名
   private String realName="";   

  //国内外现状
   private String statusOf="";

   //主要研究内容(研究内容提要)
   private String mainContent="";

   //要达到的目标、成果形式及主要技术指标
   private String reachObject="";

   //前期工作基础
   private String beforeWork="";

   ......   

   }

    2.建立mycompass.cmd.xml文件

 

<?xml version="1.0"?>

<!DOCTYPE compass-core-meta-data PUBLIC
    "-//Compass/Compass Core Meta Data DTD 2.2//EN"
    "http://www.compass-project.org/dtd/compass-core-meta-data-2.2.dtd">


<compass-core-meta-data>

  <meta-data-group id="mycompass" displayName="My Compass">
 
    <description>Mycompass Meta Data</description>    
    <uri>http://com/darkhe/sample/mycompass</uri>
   
    <alias id="ProjectApply" displayName="ProjectApply">
        <description>ProjectApply alias</description>
        <uri>http://com/darkhe/sample/mycompass/alias/ProjectApply</uri>
        <name>ProjectApply</name>
    </alias>

    <meta-data id="projectName" displayName="projectName">
        <description>projectName</description>
        <uri>http://com/darkhe/sample/mycompass/alias/projectName</uri>
        <name>projectName</name>
    </meta-data>
   
    <meta-data id="projectTypeName" displayName="projectTypeName">
        <description>projectTypeName</description>
        <uri>http://com/darkhe/sample/mycompass/alias/projectTypeName</uri>
        <name>projectTypeName</name>
    </meta-data>
   
    <meta-data id="realName" displayName="realName">
        <description>realName</description>
        <uri>http://com/darkhe/sample/mycompass/alias/realName</uri>
        <name>realName</name>
    </meta-data>
   
    <meta-data id="statusOf" displayName="statusOf">
        <description>statusOf</description>
        <uri>http://com/darkhe/sample/mycompass/alias/statusOf</uri>
        <name>statusOf</name>
    </meta-data>
    <meta-data id="mainContent" displayName="mainContent">
        <description>mainContent</description>
        <uri>http://com/darkhe/sample/mycompass/alias/mainContent</uri>
        <name>mainContent</name>
    </meta-data>    
               
  </meta-data-group>
 
</compass-core-meta-data>

    3.建立mycompass.cpm.xml文件

 

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE compass-core-mapping PUBLIC
"-//Compass/Compass Core Mapping DTD 2.2//EN"
"http://www.compass-project.org/dtd/compass-core-mapping-2.2.dtd">
<!-- 这里的包名必须和pojo的包名一致 -->
<compass-core-mapping package="com.cgb.ky.resources.model">
<!-- 定义实体及其字段的对应关系 -->
<!-- 注意实体及其字段的名称的大小写应当与pojo对象一致,而不是与数据库一致
关于pojo与数据库的对应表的一致性关系由hibernate的映谢文件定义,而不是这个文件
当前映射文件只定义compass与hibernate的关系 -->
<class name="ProjectApply" alias="${mycompass.ProjectApply}">
<id name="id" />
<property name="projectName">
  <meta-data >${mycompass.projectName}</meta-data>
</property>
<property name="projectTypeName">
  <meta-data >${mycompass.projectTypeName}</meta-data>
</property>
<property name="realName">
  <meta-data >${mycompass.realName}</meta-data>
</property>
<property name="statusOf">
  <meta-data >${mycompass.statusOf}</meta-data>
</property>
<property name="mainContent">
  <meta-data >${mycompass.mainContent}</meta-data>
</property>
</class>
</compass-core-mapping>

4.建立mycommpass.cfg.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<compass-core-config xmlns="http://www.compass-project.org/schema/core-config"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://www.compass-project.org/schema/core-config
          http://www.compass-project.org/schema/compass-core-config-2.2.xsd">
<compass name="default">
<connection>
  <file path="target" />
</connection>
<searchEngine>
  <!-- 因是使用自己的分词算法,所以这里的类型必须是CustomAnalyzer -->
      <analyzer name="ChineseAnalyzer" type="CustomAnalyzer" analyzerClass="org.apache.lucene.analysis.cn.ChineseAnalyzer">
        <stopWords>
            <stopWord value="test" />
        </stopWords>
      </analyzer>
     
     
    </searchEngine>
</compass>
</compass-core-config>
5.修改applicationContext.xml文件,添加如下内容

   <beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
 xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
 xmlns:compass="http://www.compass-project.org/schema/spring-core-config"
 xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context-2.5.xsd
           http://www.springframework.org/schema/aop
           http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
           http://www.springframework.org/schema/tx
           http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
           http://www.compass-project.org/schema/spring-core-config
           http://www.compass-project.org/schema/spring-compass-core-config-2.2.xsd">

   <!-- COMPASS START -->
    <bean id="compass" class="org.compass.spring.LocalCompassBean">
        <property name="resourceLocations">
            <list>
                <value>classpath:mycompass.cmd.xml</value>
                <value>classpath:mycompass.cpm.xml</value>
            </list>
        </property>
        <property name="compassSettings">
            <props>
                <prop key="compass.engine.connection">D:/index</prop>
                <prop key="compass.transaction.factory">org.compass.spring.transaction.SpringSyncTransactionFactory</prop>
            </props>
        </property>
      
        <property name="configLocation">
    <value>classpath:mycompass.cfg.xml</value> 
  </property>
       <property name="transactionManager">
            <ref local="txManager" />
        </property>
    </bean>
    <bean id="hibernateGpsDevice" class="org.compass.gps.device.hibernate.HibernateGpsDevice">
      <property name="name"><value>hibernateDevice</value></property>
      <property name="sessionFactory"><ref local="sessionFactory" /></property>
      <property name="nativeExtractor"><bean class="org.compass.spring.device.hibernate.SpringNativeHibernateExtractor" /></property>
    </bean>
  <bean id="compassGps" class="org.compass.gps.impl.SingleCompassGps" init-method="start" destroy-method="stop">
    <property name="compass"><ref bean="compass" /></property>
    <property name="gpsDevices">
      <list>
             <ref bean="hibernateGpsDevice" />
      </list>
    </property>
  </bean>
 
    <!-- 定时重建索引(利用quartz)或随Spring ApplicationContext启动而重建索引 -->  
   <bean id="compassIndexBuilder" 
       class="com.cgb.compass.index.CompassIndexBuilder" 
        lazy-init="false">  
       <property name="compassGps" ref="compassGps" />  
        <property name="buildIndex" value="true" />  
        <property name="lazyTime" value="5" />  
   </bean> 
  <!-- COMPASS END -->

 

   6.建立IOC.java Index.java Search.java文件如下

   IOC.java

package com.cgb.compass.index;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class IOC {
 private static ApplicationContext context = null;
 private static boolean isInit = false;
 private IOC() {
 super();
 }
 private static void init() {
 if (isInit == false) {
   String[] xmlfilenames = { "applicationContext.xml" };
   context = new ClassPathXmlApplicationContext(xmlfilenames);
   isInit = true;
 }
 }
 /**
 *
 * @return
 */
 public static ApplicationContext getContext() {
 if (context == null || isInit == false) {
   init();
 }
 return context;
 }
 /**
 *
 * @param name
 * @return
 */
 public static Object getBean(String name) {
 return getContext().getBean(name);
 }
 }

index.java

package com.cgb.compass.index;


import java.io.FileNotFoundException;


import org.compass.gps.CompassGps;
import org.springframework.context.ApplicationContext;


public class Index {

 /**
  * @param args
  */
 public static void main(String[] args) throws FileNotFoundException {
  // TODO Auto-generated method stub
  // 加裁自定义词典
  //Dictionary.loadCustomDictionary();
  
  ApplicationContext context = IOC.getContext();
  // 得到spring环境中已经配置和初始化好的compassGps对象
  CompassGps compassGps = (CompassGps) context.getBean("compassGps");
  // 调用index方法建立索引
  compassGps.index();
 }

}
Search.java

package com.cgb.compass.index;

import java.io.FileNotFoundException;

import org.compass.core.Compass;
import org.compass.core.CompassCallbackWithoutResult;
import org.compass.core.CompassException;
import org.compass.core.CompassHits;
import org.compass.core.CompassSession;
import org.compass.core.CompassTemplate;
import org.compass.core.Resource;
import org.springframework.context.ApplicationContext;

import com.cgb.ky.resources.model.ProjectApply;

public class Searcher {

 /**
  * @param args
  */
 public static void main(String[] args) throws FileNotFoundException {
  // 加裁自定义词典
  //DictionaryUtils.loadCustomDictionary();
  ApplicationContext context = IOC.getContext();
  Compass compass = (Compass) context.getBean("compass");
  
  CompassTemplate template = new CompassTemplate(compass);
  template.execute(new CompassCallbackWithoutResult() {
    protected void doInCompassWithoutResult(CompassSession session)
    throws CompassException {
  
    CompassHits hits = session.find("钢铁");
    System.out.println("Found [" + hits.getLength()
      + "] hits for [钢铁] query");
    System.out
      .println("======================================================");
    ProjectApply pa = new ProjectApply();
    for (int i = 0; i < hits.getLength(); i++) {
  //  print(hits, i);
     pa = (ProjectApply)hits.data(i);
     System.out.println(pa.getProjectName());
    }
    hits.close();
    }
  });
  }
  public static void print(CompassHits hits, int hitNumber) {
  Object value = hits.data(hitNumber);
  Resource resource = hits.resource(hitNumber);
  System.out.println("ALIAS [" + resource.getAlias() + "] SCORE ["
    + hits.score(hitNumber) + "]");
  System.out.println(":::: " + value);
  System.out.println("");
  }
  
}
按照以上建立,没错误后,先运行Index.java再运行search.java文件则可。

 注意的是:xml配置文件中xmlns ,xsi:schemaLocation等引用要准确,不然会报错。

分享到:
评论

相关推荐

    个性化的E-MAIL软件 Icredimail2001b

    个性化的E-MAIL软件 Icredimail2001b 充满个性化E-MAIL软件,可以选择信纸动画和声音及签名

    《基于YOLOv8的蹦床馆识别系统》(包含源码、完整数据集、可视化界面、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。

    MOCD207M 产品规格书

    MOCD207M 丝印D207 SOP8 1.25V 150mA晶体管输出光耦

    2024年迎接上市公司重组并购浪潮推动出版行业企业数字化转型报告.pdf

    2024年迎接上市公司重组并购浪潮推动出版行业企业数字化转型报告

    基于Andorid的闹钟功能设计.zip

    基于Andorid的闹钟功能设计实现源码,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。

    电商_微信小程序_学习项目_电商功能演示_1742849441.zip

    电商_微信小程序_学习项目_电商功能演示_1742849441.zip

    《基于YOLOv8的网球发球分析系统》(包含源码、完整数据集、可视化界面、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。

    React_应用开发_github-notetaker_实战_1742847797.zip

    app开发

    《基于YOLOv8的隧道安全监测系统》(包含源码、完整数据集、可视化界面、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。

    5小时零基础入门小程序云开发-2.7G课程网盘链接提取码下载.txt

    本套课程带领大家零基础入门小程序云开发。摆脱后台自己实现小程序后台,学会音视频小程序的开发,学会小程序图片的上传与管理,学习人工智能识别图片,用小程序模仿微信朋友圈,实现一个云相册。

    移动开发_Android_MVC_调试工具框架BeeFram_1742846880.zip

    移动开发_Android_MVC_调试工具框架BeeFram_1742846880.zip

    vue3-element-admin基础框架带权限参考文档:https://vue3-element-admin-site.midfar.com

    vue3-element-admin基础框架带权限 参考文档:https://vue3-element-admin-site.midfar.com

    《基于YOLOv8的儿童行为监测系统》(包含源码、完整数据集、可视化界面、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。

    Python网页文本爬虫:基于小说网站的基础爬虫实现与解析

    内容概要:本文介绍了Python网页文本爬虫的基本概念及其应用,特别是针对小说网站的爬虫实现。文中详细讲解了爬虫的工作原理和技术要点,如urllib库的使用、字符串操作以及正则表达式的初步应用。此外,还提供了完整的爬虫代码示例,涵盖从HTML页面下载到数据提取和处理的全过程。通过对小说网站的具体案例分析,展示了如何利用Python编写简单的爬虫程序来抓取并保存所需信息。 适合人群:对Python编程有一定基础的学习者,尤其是希望了解和掌握网页爬虫技术的初学者。 使用场景及目标:适用于想要快速入门Python爬虫技术的人群,帮助他们理解爬虫的基本原理和实现方法,为后续深入学习打下坚实基础。具体应用场景包括但不限于自动化数据收集、信息检索系统构建等。 其他说明:虽然本文主要关注于基础爬虫的实现,但同时也提到了一些进阶的技术方向,如HTTP长连接和多线程的应用,供有兴趣进一步探索的读者参考。

    jiguang.zip

    jiguang.zip

    weifuchenggg_JKBD_1742849495.zip

    weifuchenggg_JKBD_1742849495.zip

    移动开发_iOS_Safari快捷方式_应用内功能演示_1742853882.zip

    app开发

    移动开发_iOS_Scriptable_TSX_自动化脚本库_1742849101.zip

    app开发

Global site tag (gtag.js) - Google Analytics