`
dragonzhu
  • 浏览: 14694 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Compass: Integrate Search into your apps

阅读更多
www.infoq.com/articles/compass-search-tutorial
终于把这面的文章大体翻译完毕,其中的几句不知如何翻译(特别是marshalling and unmarshalling ,知道可以告诉我,先谢了)
compass支持的映射是OSEM (Object/Search Engine Mapping)。它允许把对象域模型实例映射成搜索引擎

。下面是Author类的一个例子,关于使用了annotations的OSEM定义。
@Searchable
 public class Author {

    @SearchableId
   private Long id;

    @SearchableComponent
   private String Name;

    @SearchableReference
   private List books;

    @SearchableProperty(format = "yyyy-MM-dd")
   private Date birthdate;
 }

  // ...

 @Searchable
 public class Name {

    @SearchableProperty
   private String firstName;

    @SearchableProperty
   private String lastName;
 }
OSEM supports marshalling and unmarshalling an object hierarchy into a Resource. When saving the Author object, Compass will marshall it into a Resource, with the Name class marshalled into the same Resource that represents the Author (thanks to the component mapping), 和 作者的清单中每本书的一个引用(存储在其他 Resources). 结果集 resource 将被保存和索引进搜索引擎。
Compass位对象域模型实例映射成搜索引擎提供了一种非常灵活的机制,上面的例子仅仅是一个比较简单的例子。OSEM allows to specify custom converters, multiple meta-data (maps to Resource Property) per class property, analyzers, 'all' field participation, and many more.
下面是一个AUTHOR类如何被使用的:
// ...
 Author author = new Author(1, new Name("jack", "london"), new Date());
 session.save(author);
 // ...
 author = (Author) session.load(Author.class, 1);

在compass最后一种支持的搜索引擎映射是XSEM (Xml/Search Engine Mapping).这种映射允许把xml数据映射成为搜索引擎,它是建立在xpath的基础上的。The XSEM process goes through the same marshalling and unmarshalling process from and to Resources. Compass引入XmlObject (一种XML包装对象),它有不同的实现形式(dom4j, W3C Document),都可以实现xpath表达式赋值。我看一看下面的XML数据结构:
<xml-fragment>
    <author id="1">
      <firstName>Jack</firstName>
      <lastName>London</lastName>
    </author>
  </xml-fragment>
下面就是有可能的XSEM定义
<compass-core-mapping>
    <xml-object alias="author" xpath="/xml-fragment/author">
      <xml-id name="id" xpath="@id" />
      <xml-property xpath="firstName" />
      <xml-property xpath="lastName" />
      <xml-content name="content" />
    </xml-object>
  </compass-core-mapping>
使用Xpath表达式把XML数据结构映射成搜索引擎。在搜索引擎中使用xml-content映射,数据可以存储XML结构,所以它可以在loading/searching 数据时使用。在JSE 5中Compass支持几种XML dom库,dom4j (SAX and XPP) ,用户自定义也很容易。下面是一个它如何被使用的例子:
Reader reader = // construct an xml reader over raw xml content
 AliasedXmlObject xmlObj = RawAliasedXmlObject("author", reader);
 session.save(xmlObj);
 // ...
 Resource resource = session.loadResource("author", 1);
 // since we have xml-content, we can do the following as well
 XmlObject xmlObj = session.load("author", 1);
  Compass Gps是目标在于Compass和不同的数据源集成的模块。在Compass最通用的数据源集成是和不同的ORM(对象关系映射)工具集成。Compass支持JPA, Hibernate, OJB, JDO 和iBatis。
我们以Hibernate为例子,Compass引入了两种主要的操作:Indexing and Mirroring。使用Hibernate映射和Compass映射,Indexing 可以自动的索引数据库内容。拥有这两种映射的对象可以自动的使用Hibernate得到数据,保存到搜索引擎中。通过注册Hibernate的事件监听器以及Hibernatede API,Mirroring自动的镜像到搜索引擎。通过Hibernate API可以使索引随着数据的改变实时更新。下面是一个如何使用Compass Gps Hibernate集成的例子:
SessionFactory sessionFactory = // Hibernate Session Factory
 Compass compass = // set up a Compass instance
 CompassGps gps = new SingleCompassGps(compass);
 CompassGpsDevice device = new Hibernate3GpsDevice("hibernate", sessionFactory);
 gps.addDevice(device);
 // start the gps, mirroring any changes made through Hibernate API
 // to be mirrored to the search engine
 gps.start();

  // ....

  // this will cause the database to be indexed
 gps.index();
  // this will cause Hibernate to store the author in the database
  // and also index the author object through Compass
 hibernateSess.save(new Author(1, new Name("jack", "london"), new Date()));
分享到:
评论

相关推荐

    maptalks.control.compass:Maptalks指南针控件

    maptalks.control.compass maptalks罗盘控件。 例子 安装 使用npm npm install maptalks.control.compass : npm install maptalks.control.compass 。 用纱安装: yarn add maptalks.control.compass 。 从下载...

    compass:我们走吧

    "compass:我们走吧"这个标题可能是在鼓励开发者利用Compass来提升他们的前端开发效率和项目质量。 Compass是一款基于Sass的框架,Sass是Syntactically Awesome Style Sheets(语法超炫样式表)的缩写,是一个用于...

    prisma-multi-tenant::compass:将Prisma用作您的应用程序的多租户提供程序

    棱镜多租户 :compass: :compass: 使用Prisma作为您的应用程序的多租户提供程序什么是多租户应用程序? 应用程序是指应用程序的单个实例在服务器上运行并为多个租户提供服务的情况。 借助多租户体系结构,软件应用...

    cellguide::compass:在Web浏览器中浏览单细胞RNA-seq数据集

    细胞指南 :compass: 在您的Web浏览器中浏览单细胞RNA-seq数据集。 在尝试 产品特点 在UMAP图上显示元数据 在UMAP图形上显示基因表达 单元群集和元数据类别的汇总统计信息 立即找到任何基因 浏览每个基因的统计数据...

    NavigationKit::compass:SwiftUI导航正确完成

    :compass: 导航套件 NavigationKit是一个轻量级的库,它使SwiftUI导航超级易于使用。 :laptop: 安装 :package: 迅捷软件包管理器 使用 ,将其作为Xcode 11.0或更高版本中的select File > Swift Packages > Add ...

    compass:Compass是一个轻量级的嵌入式分布式数据库访问层框架

    分布式数据库中间件-Compass 功能介绍 Compass是搜狗商业平台研发部开发的一套轻量级的分布式数据库访问框架,支持单库、主从库读写分离、分库、分库之后再分表、从库负载均衡和HA等使用场景,并且在框架层面提供了...

    compass:COMPASS 文档和用户手册

    《compass:COMPASS 文档和用户手册》是针对 Compass 框架的详细参考资料,它为开发者和用户提供了深入理解及使用 Compass 的关键知识。Compass 是一个强大的 CSS(层叠样式表)预处理器,它扩展了 CSS 语言,使得...

    vu-compass:威尼斯释放的指南针ui-mod

    u罗盘 威尼斯释放的指南针ui-mod 关于 我们都知道并喜欢的指南针小部件 :winking_face_with_tongue:从PR,PUBG,Squad等游戏中获取,现在...Events: Dispatch ( ' Compass:Config ' , { [ ' position ' ] = ' bottom '

    Compass全文检索系列之一:Compass入门

    在实际应用中,我们可以按照以下步骤来使用Compass: 1. **安装与依赖**:将Compass库添加到项目中,根据所使用的ORM框架选择相应的版本。 2. **配置ORM集成**:配置Compass与ORM框架的连接,指定数据源和索引存储...

    grunt-contrib-compass:将Compass编译为CSS

    grunt-contrib-compass v1.1.1 使用Compass将Sass编译为CSS入门如果您以前从未使用过 ,请务必查看《指南》,因为它说明了如何创建以及安装和使用Grunt插件。 熟悉该过程后,可以使用以下命令安装此插件: npm ...

    compass:Web App和Discord机器人

    Compass是一款专为Discord社区设计的Web应用程序,它提供了丰富的功能来增强用户的互动体验。通过集成多种游戏服务,如Steam和PSN,Compass可以让用户在Discord中展示自己的游戏成就和社交链接,从而增强社区内的...

    docker-compass:用于运行Compass的Docker映像

    如何使用这张图片指南针手表 docker run --rm -v [SCSS_DIR]:/input -v [CSS_DIR]:/output -v [IMAGES_DIR]:/images stevevega/compass watch将[SCSS_DIR]替换为主机scss源目录,将[CSS_DIR]替换为主机css输出目录。...

    sass-compass:使用 git 进行 sass 指南针课程测试

    【标题】:“Sass Compass:使用Git进行课程测试的指南” 【内容详解】 Sass Compass 是一个强大的 CSS 预处理器框架,它扩展了 Sass 的功能,为开发者提供了丰富的样式库和工具,使得编写和组织 CSS 代码变得更加...

    Compass:一个简单的Firefox起始页

    :compass: 罗盘 指南针几乎总是会为您提供正确的方向。 所以...这个起始页将为您提供一个正确的方向,以便您....广阔的Internet世界。 哦,而且,因为我使用nord主题,所以指南针指向了nord。

    TelegramMap:使用Telegram的Near-By功能对全球范围内的人进行地理定位:compass:

    使用Telegram的Near-By功能对全球范围内的人进行地理定位 :compass: 每个名称仅保留前三个字母。 如果用户没有名称,则使用用户名的前4个字符(包括“ @”) 安装 pip3 install scripts/requirements.txt 设置 创建....

    COMPASS:提供校本特殊服务项目的指南

    COMPASS : A GUIDE FOR DELIVERING SCHOOL-BASED SPECIAL SERVICE PROGRAMS CHARLES A. MAHER Rutgem Univerdy A systematic approach for providing school-based special service programs is offered. ...

    Compass_入门指南

    Compass 入门指南 Compass 是一个搜索引擎框架,旨在提供...* Compass:1.2.1 * Hibernate:3.3 Compass 是一个功能强大且灵活的搜索引擎框架,提供了多种配置方式和 API 接口,非常适合大型企业应用程序的搜索需求。

    grunt-compass:不赞成使用grunt-contrib-compass

    标题"grunt-compass:不赞成使用grunt-contrib-compass"表明了这个话题的核心:Grunt社区已经不再推荐使用"grunt-compass"这个插件。这通常是因为有更好的替代品或者插件本身存在一些问题,比如性能低下、不兼容新...

    COMPASS: A guide for delivering school-based special service programs

    COMPASS : A GUIDE FOR DELIVERING SCHOOL-BASED SPECIAL SERVICE PROGRAMS CHARLES A. MAHER Rutgem Univerdy A systematic approach for providing school-based special service programs is offered. ...

    compass:高级交互设计指南针 MAMN01

    【标题】"compass:高级交互设计指南针 MAMN01" 暗示着这是一个关于高级交互设计的项目,特别关注的是指南针的应用。在IT领域,这可能是一个使用Java编程语言为Android平台开发的软件应用。"MAMN01"可能是项目代码...

Global site tag (gtag.js) - Google Analytics