首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Hibernate Search 引语实例

2012-10-19 
Hibernate Search 注解实例pojo 对象 Newsimport java.util.Dateimport javax.persistence.Entityimport

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 />
</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 例子.

热点排行