热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

HibernateSearch的常用注解

转载请注明出处:http:blog.csdn.netl1028386804articledetails48949275HibernateSearch的常用注解1.@Indexed

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/48949275

Hibernate Search 的常用注解

1. @Indexed 
  -> index指定索引名称  
2. @Field 
  -> name 指定当前属性在LuceneDocument中存储的名称,默认为属性名  
  -> store 指定当前属性是否被存储在Luceneindex中,可选值为:  
    1) Store.YES 占用大量的索引空间,支持"投影(projection)" 
    2) Store.COMPRESS压缩方式,消耗大量CPU  
    3) Store.NO (default)  
  -> index指定元素索引方式和信息存储类型,可选值为:  
    1) Index.NO不索引,只有通过设置store才可以访问其内容  
    2) Index.TOKENIZED (default)使用analyzer  
    3) Index.UN_TOKENIZED不使用analyzer  
    4) Index.NO_NORMS不存储正常化数据  
    是否采用分词可依据,是要查询数据本身还是它所包含的内容(文字);  
    用来排序的域不需要分词。  
  -> termVector检索词频  
    1) TermVector.YES  
    2) TermVector.NO(default)  
    3)TermVector.WITH_OFFSETS  
    4)TermVector.WITH_POSITIONS  
    5)TermVector.WITH_POSITION_OFFSETS  
  ->indexNullAs  
    1)Field.DO_NOT_INDEX_NULL  
      通过hibernate.search.default_null_token指定,默认为_null_  
      查询时使用相同的分词来查找空值,建议Index.UN_TOKENIZED时使用  
    2) Field.DEFAULT_NULL_TOKEN(default)  
  -> boost 用法形如:boost=@Boost(2f),详见@Boost 
3. @NumericField 
  @Field的联合注解,用于Integer, Long,Float和Double属性,索引时采用字典树结构(Triestructure).  
  Lucene将此API标记为experimental,未来版本未必支持。HibernateSearch将尽量掩盖底层的API变化,但也未必能有效保证。  
  ->forField  
  -> precisionStep(default值4)  
4. @DocumentId 
 用于保证索引实体的单一性。必须存储而且必须不能被分词。采用JPA方式时,如果指定了@Id则不再需要标注该注解。  
5. @Fields 
 同一个域采用不同的索引策略。需要为每个Field指定name属性(非强制).  
 当使用@Fields时,@Field将支持两个有用的属性:  
   -> analyzer为每个field定义@Analyzer而非为属性定义  
   -> bridge 每个field定义@FieldBridge而非为属性定义  
6. @IndexedEmbedded 
 对象有组合关系时使用。  
   -> depth关联的深度,存在循环的依赖时使用。  
   -> prefix索引fields的前缀,默认为"属性名.",如address.city中的"address." 
   ->targetElement被标注的域不是实际对象类型(如声明类型为接口)时使用,用来指定实际对象类型  
  关联对象会自动被设为@Indexed 
7. @ContainedIn 
  双相关联的对象中,另一方配合@IndexedEmbedded使用,保证Lucenedocument的联动更新。  
 当前类被用JPA方式标注为@Embeddable时不需要使用@ContainedIn 
8. @Boost 
 静态索引加速。与被索引实体的运行时状态无关。  
    1)可用在@Field的boost属性中、方法级、类级  
    2)不同方式指出的加速系数会累积,不能重复使用。如  
        @Field(boost=@Boost(1.5f))  
        @Boost(2f)  
        public String getSummary() { return summary;}  
      则summary系数为3,比普通域重要3倍  
    3)加速系数的指定并非精确的,可用来标注相对重要的实体或域。  
9. @DynamicBoost 
 动态索引加速。  
  -> impl指定具体的加速策略实现类  
    1)用于class或field级别  
    2)使用该标注时,需要自定义加速策略类并实现BoostStrategy接口:  
        public interface BoostStrategy{  
          public float defineBoost(Objectvalue);  
         
      value是被标注的类型实例或属性值。  
    3)可以和@Boost混合使用  
10. @Analyzer 
  -> impl指定具体的Analyzer实现类  
  -> definition指向@AnalyzerDef标注中name属性定义的值  
  * 类方式:  
    1) 可以作用于实体、属性甚至每个域  
    2)同一实体中使用不同的混合的Analyzer通常是一种坏的做法,尤其是在使用QueryParser查询时  
    3)必须保证在同一域上,索引和查询使用的是同一个Analyzer.  
11. @AnalyzerDef 
  Hibernate Search采用Solrframework做分词。  
 版本3.3.0.Beta2之前需添加Solr依赖,之后被囊入org.hibernate:hibernate-search-analyzers中  
  -> name (Required)定义该分词器的唯一字符串  
  -> charFilters (Optional)负责对分词前的输入流预处理  
  -> tokenizer (Required)负责拆分输入流为单词或单字  
  -> filters (Optional)负责对分词后的输入流做一些额外处理  
 通过@AnalyzerDef声明的Analyzer实例可以在SearchFactory中得到:  
    Analyzeranalyzer =fullTextSession.getSearchFactory().getAnalyzer("customanalyzer");  
12. @CharFilterDef 
  ->factory  
  ->params  
13. @TokenizerDef 
  ->factory  
  ->params  
14. @TokenFilterDef 
  ->factory  
  ->params  
15. @DateBridge 
  日期型存储格式为yyyyMMddHHmmssSSS  
  ->resolution  
    1) Resolution.DAY  
    2) Resolution.HOUR  
    3) Resolution.MILLISECOND  
    4) Resolution.MINUTE  
    5) Resolution.MONTH  
    6) Resolution.SECOND  
    7) Resolution.YEAR  
16. @FieldBridge 
  -> impl所使用Bridge的实现类名,该实现类需实现以下接口之一,且所有实现必须是线程安全的:  
    1)StringBridge  
        最简单的Bridge,作用于普通的field/getter/class 
        需要实现objectToString(Objectobject)方法,以便自定义对象到String的转换过程  
    2)TwoWayStringBridge  
        作用于标注了@DocumentId的属性(通常为id属性)  
        需要提供双向转换,且object =stringToObject(objectToString(object))要成立  
    3)FieldBridge  
        可灵活操作LuceneDocument.例如需要对日期分年、月、日存储在3个field时.  
        需要实现set(String name,Object value,Document document,LuceneOptionsluceneOptions)方法  
   可选接口:  
      ParameterizedBridge用来获得参数  
      AppliedOnTypeAwareBridge用来获得被标注为@FieldBridge的类型  
  ->params   
17. @ClassBridge 
 用于一个实体对应的多个属性的联合索引,且该索引通常需要采用一种特殊的索引方式  
  ->impl  
  ->name  
  ->store  
  ->analyzer  
  ->index  
  ->termVector  
  ->boost  
  -> params 


推荐阅读
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • 阿里Treebased Deep Match(TDM) 学习笔记及技术发展回顾
    本文介绍了阿里Treebased Deep Match(TDM)的学习笔记,同时回顾了工业界技术发展的几代演进。从基于统计的启发式规则方法到基于内积模型的向量检索方法,再到引入复杂深度学习模型的下一代匹配技术。文章详细解释了基于统计的启发式规则方法和基于内积模型的向量检索方法的原理和应用,并介绍了TDM的背景和优势。最后,文章提到了向量距离和基于向量聚类的索引结构对于加速匹配效率的作用。本文对于理解TDM的学习过程和了解匹配技术的发展具有重要意义。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
  • 本文介绍了解决二叉树层序创建问题的方法。通过使用队列结构体和二叉树结构体,实现了入队和出队操作,并提供了判断队列是否为空的函数。详细介绍了解决该问题的步骤和流程。 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • ALTERTABLE通过更改、添加、除去列和约束,或者通过启用或禁用约束和触发器来更改表的定义。语法ALTERTABLEtable{[ALTERCOLUMNcolu ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • 技嘉秀高端B450主板:不再支持第七代APU,性价比高且兼容锐龙一代和二代
    在台北电脑展上,技嘉展示了一款高端的B450主板,型号为“b450 aorus pro wi-fi”。该主板具有10+1相供电、散热片覆盖的供电区域和芯片组,以及两个m.2插槽和背部IO挡板。虽然不支持第七代APU bristol ridge,但它兼容锐龙一代和二代,且具有较高的性价比。该主板还配备了音频声卡、Wi-Fi无线网卡等功能,是一款性能出色且设计精良的主板。 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有