`
qing393260529
  • 浏览: 46664 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Hibernate Search 注解实例

阅读更多

pojo 对象 News


import java.util.Date;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

import org.hibernate.search.annotations.DocumentId;
import org.hibernate.search.annotations.Field;
import org.hibernate.search.annotations.Indexed;
import org.hibernate.search.annotations.Store;

@Entity
@Table(name="t_news")
@Indexed
public class News {

 @Id
 @GeneratedValue(strategy=GenerationType.AUTO)
 @DocumentId
 private int id;
 @Field(store=Store.YES)
 private String title;
 @Field
 private String context;
 
 private Date date;

 public int getId() {
  return id;
 }

 public void setId(int id) {
  this.id = id;
 }

 public String getTitle() {
  return title;
 }

 public void setTitle(String title) {
  this.title = title;
 }

 public String getContext() {
  return context;
 }

 public void setContext(String context) {
  this.context = context;
 }

 public Date getDate() {
  return date;
 }

 public void setDate(Date date) {
  this.date = date;
 }
 
}

 

hibernate 配置文件

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "
http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
<session-factory>
 <property name="hibernate.connection.driver_class">
  com.mysql.jdbc.Driver
 </property>
 <property name="hibernate.connection.url">
  jdbc:mysql://localhost/test
 </property>
 <property name="hibernate.connection.username">root</property>
 <property name="hibernate.dialect">
  org.hibernate.dialect.MySQLDialect
 </property>
 <property name="hibernate.show_sql">true</property>
 <property name="hibernate.search.default.directory_provider">
  org.hibernate.search.store.FSDirectoryProvider
 </property>
 <property name="hibernate.search.default.indexBase">
  D:/temp/index
 </property>
 <mapping class="com.search.entity.News" />
</session-factory>
</hibernate-configuration>

 

测试类 NewsTest


import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.queryParser.MultiFieldQueryParser;
import org.apache.lucene.queryParser.ParseException;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.Query;
import org.hibernate.Session;
import org.hibernate.search.FullTextQuery;
import org.hibernate.search.FullTextSession;
import org.hibernate.search.Search;

import com.search.dao.NewsDao;
import com.search.entity.News;
import com.search.utils.HibernateUtiles;

public class NewsTest{

 public void addNews(News news) {
  // TODO Auto-generated method stub
 }

 public void createIndex(){
  Session session=HibernateUtiles.getSession();
     FullTextSession fts=Search.createFullTextSession(session);
     fts.getTransaction().begin();
     List<News> newsList = session.createQuery("from News").list();
     for (News news : newsList) {
   fts.index(news);
  }
     fts.getTransaction().commit();
 }
 
 public List<News> search(String key) {
  // TODO Auto-generated method stub
  List<News> result =new ArrayList<News>();
  Map<String, String> map=new HashMap<String, String>();
  map.put("title", "我");
  map.put("context", "我");
  String[] str={"title","context"};
  try {
   QueryParser parser = new MultiFieldQueryParser(str, new StandardAnalyzer(),map);
   Query luceneQuery = parser.parse("context:我");
      FullTextSession s = Search.createFullTextSession(HibernateUtiles.getSession());
      FullTextQuery query = s.createFullTextQuery(luceneQuery, News.class);
      result = query.list();
      for (News news : result) {
   System.out.println("id:"+news.getId());
   }
     
  } catch (ParseException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  return result;
 }

 public static void main(String[] args) {
  new NewsTest().search("");
 }
 
}
这个一个最简单的 hibernate search 例子.

分享到:
评论

相关推荐

    hibernate search全文索引的创建及查询

    1. **配置实体类**:你需要在你的持久化实体类上添加注解`@Indexed`,表示这个类的实例会被索引。例如: ```java @Entity @Indexed public class Book { @Id private Long id; @Field private String ...

    基于Spring的Hibernate Search全文检索功能示例

    2. **实体类注解**:在你的实体类上使用`@Indexed`注解,声明该类的实例需要被索引。然后,使用`@Field`或`@AnalyzerDef`等注解定义字段的索引方式。 3. **配置SessionFactory**:在Spring配置文件中,配置...

    Struts + Hibernate网上书店实例

    Hibernate提供了一种声明式的方式来管理数据库操作,通过XML配置文件或注解将Java对象映射到数据库表。在书店实例中,可能有Book、Author、Publisher等实体类,对应数据库中的books、authors、publishers等表。使用...

    hibernate search源码

    **hibernate search源码详解** Hibernate Search是Hibernate ORM框架的一个强大扩展,它将全文搜索引擎的功能集成到了Java持久层,使得开发者可以方便地在数据库中进行复杂的文本搜索。本篇文章将深入探讨Hibernate...

    hibernate-search-5.5.1.Final-dist.zip

    《Hibernate Search 5.5.1.Final:全面解析企业级数据检索的利器》 Hibernate Search,作为Hibernate ORM的一个扩展,提供了在Java应用中进行全文搜索和复杂索引的能力。这个压缩包“hibernate-search-5.5.1.Final-...

    hibernate-search-5.5.5.Final

    7. **文档与示例**:此版本提供的说明文档详尽地介绍了如何配置、使用和调试Hibernate Search,同时还包含了一些实例代码,帮助开发者快速上手。 综上所述,Hibernate Search 5.5.5.Final为Java开发者提供了一套...

    \hibernate search in action.rar

    《Hibernate Search In Action》这本书不仅提供了理论知识,还有丰富的实例代码和实战经验分享,是Java开发者深入了解和掌握Hibernate Search的宝贵资源。通过学习这些内容,开发者能够有效地在Java应用中构建出高效...

    hibernate复合主键的实例

    本实例将深入探讨如何在Hibernate中实现复合主键,并提供一个具体的示例来帮助理解。 一、什么是复合主键? 在数据库设计中,主键是用于唯一标识表中每一行的字段或字段组合。当一个表的主键由两个或更多个字段...

    hibernate-search-4.2.0.Beta2-dist.zip

    《Hibernate Search 4.2.0.Beta2:深度解析与应用指南》 Hibernate Search是Hibernate ORM框架的一个扩展,它提供了在Java应用中进行全文检索和复杂查询的强大功能。本次我们关注的是4.2.0.Beta2版本,它是...

    hibernate_search

    ### Hibernate Search:Apache Lucene 集成 #### 一、概述 Hibernate Search 是一个用于在 Java 应用程序中实现全文搜索功能的强大框架。它通过集成 Apache Lucene(一个高性能、全功能的文本搜索引擎库),为开发...

    hibernate第一个hibernate

    学习完基础后,可深入研究Hibernate的高级特性,如 Criteria API、Hibernate Search 和 JPA 规范等。 总之,"hibernate第一个hibernate"项目是一个绝佳的起点,它将引导你了解并掌握Hibernate的基本概念和操作。...

    hibernate-lib。rar

    - 扩展性:支持插件扩展,如 Criteria API、Hibernate Search 等。 总结,Hibernate的核心库是Java开发人员实现数据库操作的重要工具,其丰富的API和灵活的映射机制使得开发者能够更加专注于业务逻辑,而非底层...

    HiSInAction代码

    《HiSInAction代码》是基于Hibernate Search的一个项目实例,主要展示了如何在Java应用程序中集成并有效利用Hibernate Search的功能。Hibernate Search是Hibernate框架的一个扩展,它提供了在持久化对象上进行全文...

    hibernate的所有包

    9. **hibernate-search**: 集成了全文搜索引擎,例如Lucene,使得在Hibernate中实现复杂的数据搜索变得简单。 10. **hibernate-types**: 提供了对非标准数据库类型(如JSON、UUID、数组等)的支持,扩展了Hibernate...

    Hibernate5.2.8提取包

    - **Hibernate Search**:允许在数据库中进行全文本搜索,提供了基于Lucene的搜索引擎。 4. **使用步骤** - 配置Hibernate:设置hibernate.cfg.xml文件,定义数据库连接信息、方言、缓存等。 - 创建实体类:每个...

    SSH整合实例 - searchProduct

    总结起来,"SSH整合实例 - searchProduct"是一个涵盖Spring、Struts和Hibernate集成的典型应用场景,展示了如何在Java Web环境中高效地处理产品查询。理解并掌握这个实例,有助于开发者深入理解SSH框架的协同工作...

    SSH整合简单实例

    4. **整合Hibernate Search**:配置`persistence.xml`,添加索引目录,并在实体类上使用@Indexed和@Field注解进行标记。 5. **Spring与Hibernate整合**:在Spring配置文件中配置Hibernate SessionFactory,使用...

    hibernate jar包

    3. **Hibernate Search**:这是一个可选模块,它结合了Lucene搜索引擎,使得可以在数据库中进行全文本搜索。 4. **Hibernate Envers**:提供审计功能,记录实体的变化历史,方便追溯和审计数据修改。 5. **...

    hibernate5所需要的jar包

    Hibernate提供了对JPA规范的扩展,如Querydsl、Hibernate Search等,它们提供了更强大的查询和全文搜索功能。 9. **JAVASSIST**: 除了ASM,Hibernate也使用Javassist作为字节码生成库,特别是在不支持ASM的环境...

Global site tag (gtag.js) - Google Analytics