写这篇文章的原因是我把几个东西合起来了,记录一下学习的脚步.
主要做了这么一件事
使用jpa2.0作为规范,eclipselink2.4作为实现 ,myeclipse2013作为工具映射oracle11g的表为实体(使用jpa反向工程自动生成相应实体的dao与interface,还有EntityManager的工具类)
使用poi读取word中的内容存放到lucene的索引库中
最后
1.添加索引
2.更新索引----lucene的更新实际上 是先将索引删掉 然后重新添加索引 所以这里要注意一点 如果你的索引项不需要修改的话 不要将不需要修改的索引项传递到修改方法里面 不然 会造成未修改的索引项有多个
3.删除索引
4.根据条件,查找记录
详细步骤就不写了,代码里面都有注释:
结构图:
测试主函数: TestMain.java
/**
*
*/
package com.undergrowth.lucene.test;
import java.sql.Timestamp;
import java.util.Date;
import java.util.List;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.TextField;
import org.apache.lucene.index.Term;
import org.apache.lucene.search.TermQuery;
import com.undergrowth.bean.StuInf;
import com.undergrowth.bean.StuInfDAO;
import com.undergrowth.lucene.index.method.IndexAdd;
import com.undergrowth.lucene.index.method.IndexDelete;
import com.undergrowth.lucene.index.method.IndexUpdate;
import com.undergrowth.lucene.search.SearchUtils;
import com.undergrowth.utils.EntityManagerHelper;
/**
* @author u1
*
*/
public class TestMain {
/**该测试代码主要做这么几件事
* 使用jpa2.0作为规范,eclipselink2.4作为实现 ,myeclipse2013作为工具映射oracle11g的表为实体(使用jpa反向工程自动生成相应实体的dao与interface,还有EntityManager的工具类)
* 使用poi读取word中的内容存放到lucene的索引库中
* 最后
* 1.添加索引
* 2.更新索引----lucene的更新实际上 是先将索引删掉 然后重新添加索引 所以这里要注意一点 如果你的索引项不需要修改的话 不要将不需要修改的索引项传递到修改方法里面 不然会造成未修改的索引项有多个
* 3.删除索引
* 4.根据条件,查找记录
* @param args
*/
public static Logger logger=LogManager.getLogger(TestMain.class);
public static void main(String[] args) {
// TODO Auto-generated method stub
StuInfDAO entityDao=new StuInfDAO();
List entityList=entityDao.findAll();
disRecord(entityList);
//删除掉已存在的所有索引
IndexDelete.deleteIndexAll();
//讲查询出来的记录添加到索引中
IndexAdd.addIndex(entityList);
//查询记录
TermQuery query=new TermQuery(new Term("content", "搜索引擎"));
//TermQuery query=new TermQuery(new Term("path", "lucene"));
List resultList=SearchUtils.search(query,10);
disResultRecord(resultList);
//更新数据源
EntityManagerHelper.beginTransaction();
for (StuInf entity : entityList) {
entity.setBirthday(new Timestamp(new Date().getTime()));
entityDao.update(entity);
}
EntityManagerHelper.commit();
//清除结果集
resultList.clear();
//重新装载结果集
for (StuInf stuInf : entityList) {
Document document=new Document();
document.add(new TextField("id", stuInf.getId(),Field.Store.YES));
document.add(new TextField("birthday", stuInf.getBirthday().toString(),Field.Store.YES));
document.add(new TextField("path",stuInf.getDescriptPath(),Field.Store.YES));
document.add(new TextField("content",EntityManagerHelper.getDescriptContent(stuInf.getDescriptPath()),Field.Store.YES));
resultList.add(document);
}
//更新索引
IndexUpdate.updateIndex(new Term("content", "搜索引擎"),resultList);
//再次搜索
TermQuery queryUpdate=new TermQuery(new Term("content", "搜索引擎"));
resultList=SearchUtils.search(queryUpdate,10);
disResultRecord(resultList);
//显示未更新的索引的记录
queryUpdate=new TermQuery(new Term("content", "甲骨文"));
resultList=SearchUtils.search(queryUpdate,10);
disResultRecord(resultList);
}
//显示结果集
private static void disResultRecord(List resultList) {
// TODO Auto-generated method stub
logger.error("开始显示结果!!");
for (Document doc : resultList) {
/*System.out.println(stuInf);*/
logger.error("\n日期:"+doc.get("birthday")+"\n描述信息为:"+doc.get("content"));
}
}
//显示查询的记录
private static void disRecord(List entityList) {
for (StuInf stuInf : entityList) {
/*System.out.println(stuInf);*/
logger.debug(stuInf);
}
}
}
package com.undergrowth.lucene.index.method;
import java.io.IOException;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.lucene.index.IndexWriter;
import com.undergrowth.lucene.index.utils.IndexUtils;
public class IndexDelete {
private static Logger logger=LogManager.getLogger();
//删除索引
public static void deleteIndexAll() {
// TODO Auto-generated method stub
IndexWriter writer=IndexUtils.getIndexWrite();
try {
//删除所有索引项
writer.deleteAll();
writer.close();
logger.info("成功删除索引文件");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/**
*
*/
package com.undergrowth.lucene.index.method;
import java.io.File;
import java.io.IOException;
import java.util.List;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.lucene.analysis.cn.smart.SmartChineseAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.TextField;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.util.Version;
import com.undergrowth.bean.StuInf;
import com.undergrowth.lucene.index.utils.IndexUtils;
import com.undergrowth.utils.EntityManagerHelper;
/**
* @author u1
*
*/
public class IndexAdd {
private static Logger logger=LogManager.getLogger(IndexAdd.class);
//添加索引
public static void addIndex(List entityList) {
// TODO Auto-generated method stub
IndexWriter writer=null;
try {
writer=IndexUtils.getIndexWrite();
for (StuInf stuInf : entityList) {
Document document=new Document();
document.add(new TextField("id", stuInf.getId(),Field.Store.YES));
document.add(new TextField("birthday", stuInf.getBirthday().toString(),Field.Store.YES));
document.add(new TextField("path",stuInf.getDescriptPath(),Field.Store.YES));
document.add(new TextField("content",EntityManagerHelper.getDescriptContent(stuInf.getDescriptPath()),Field.Store.YES));
//添加索引项
writer.addDocument(document);
}
//提交索引 关闭所有关联文件
writer.close();
logger.info("添加了"+entityList.size()+"个索引");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
查询工具 SearchUtils.java
/**
*
*/
package com.undergrowth.lucene.search;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TermQuery;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import com.undergrowth.lucene.index.method.IndexAdd;
import com.undergrowth.lucene.index.utils.IndexUtils;
/**
* @author u1
*
*/
public class SearchUtils {
private static Logger logger=LogManager.getLogger(SearchUtils.class);
//根据查询条件 返回结果集
public static List search(TermQuery query,int n) {
// TODO Auto-generated method stub
List list=new ArrayList();
Directory directory=IndexUtils.getLuceneIndexPath();
try {
IndexReader reader=DirectoryReader.open(directory);
IndexSearcher searcher=new IndexSearcher(reader);
TopDocs docs=searcher.search(query, n);
logger.info("找到了"+docs.totalHits+"个元素");
ScoreDoc[] scoreDocs=docs.scoreDocs;
for (ScoreDoc scoreDoc : scoreDocs) {
Document document=searcher.doc(scoreDoc.doc);
list.add(document);
}
reader.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
}
}
package com.undergrowth.lucene.index.method;
import java.io.IOException;
import java.util.List;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.Term;
import org.apache.lucene.search.TermQuery;
import org.apache.lucene.store.Directory;
import com.undergrowth.lucene.index.utils.IndexUtils;
public class IndexUpdate {
//更新索引
public static void updateIndex(Term term,List resultList) {
// TODO Auto-generated method stub
IndexWriter writer=IndexUtils.getIndexWrite();
try {
writer.updateDocuments(term, resultList);
writer.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
package com.undergrowth.lucene.index.utils;
import java.io.File;
import java.io.IOException;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.cn.smart.SmartChineseAnalyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.util.Version;
import com.undergrowth.utils.EntityManagerHelper;
public class IndexUtils {
public static Directory getLuceneIndexPath(){
//获取索引的文件路径
File path=new File(EntityManagerHelper.getProperty("luceneIndex"));
//判断文件是否存在 不存在 则创建
if(!path.exists()) path.mkdirs();
Directory dictory=null;
try {
dictory = FSDirectory.open(path);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return dictory;
}
//获取索引写对象
public static IndexWriter getIndexWrite() {
IndexWriter writer=null;
Directory directory=getLuceneIndexPath();
SmartChineseAnalyzer analyzer=new SmartChineseAnalyzer(Version.LUCENE_45);
//Analyzer analyzer=new StandardAnalyzer(Version.LUCENE_45);
IndexWriterConfig config=new IndexWriterConfig(Version.LUCENE_45, analyzer);
try {
writer=new IndexWriter(directory, config);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return writer;
}
}
实体管理器帮助类 EntityManagerHelper.java
package com.undergrowth.utils;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.poi.hwpf.HWPFDocument;
/**
* @author MyEclipse Persistence Tools
*/
public class EntityManagerHelper {
private static final EntityManagerFactory emf;
private static final ThreadLocal threadLocal;
private static final Logger logger;
static {
emf = Persistence.createEntityManagerFactory("Lucene4.5.1");
threadLocal = new ThreadLocal();
logger = LogManager.getLogger(EntityManagerHelper.class);
}
public static EntityManager getEntityManager() {
EntityManager manager = threadLocal.get();
if (manager == null || !manager.isOpen()) {
manager = emf.createEntityManager();
threadLocal.set(manager);
}
return manager;
}
public static void closeEntityManager() {
EntityManager em = threadLocal.get();
threadLocal.set(null);
if (em != null) em.close();
}
public static void beginTransaction() {
getEntityManager().getTransaction().begin();
}
public static void commit() {
getEntityManager().getTransaction().commit();
}
public static void rollback() {
getEntityManager().getTransaction().rollback();
}
public static Query createQuery(String query) {
return getEntityManager().createQuery(query);
}
public static void log(String info, Level level, Throwable ex) {
logger.log(level, info, ex);
}
//获取配置文件路径
public static String getProperty(String key)
{
String value="";
InputStream is=EntityManagerHelper.class.getClassLoader().getResourceAsStream("config.properties");
Properties properties=new Properties();
try {
properties.load(is);
value=properties.getProperty(key);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return value;
}
//根据路径 获取word中的内容
public static String getDescriptContent(String descriptPath) {
// TODO Auto-generated method stub
String content="";
InputStream is=null;
try {
is = new FileInputStream(descriptPath);
HWPFDocument document=new HWPFDocument(is);
content=document.getDocumentText();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
if(is!=null) is.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return content;
}
}
package com.undergrowth.bean;
import java.sql.Timestamp;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
/**
* StuInf entity. @author MyEclipse Persistence Tools
*/
@Entity
@Table(name = "STU_INF", schema = "UNDER")
public class StuInf implements java.io.Serializable {
// Fields
private String id;
private Timestamp birthday;
private String descriptPath;
// Constructors
/** default constructor */
public StuInf() {
}
/** minimal constructor */
public StuInf(String id) {
this.id = id;
}
/** full constructor */
public StuInf(String id, Timestamp birthday, String descriptPath) {
this.id = id;
this.birthday = birthday;
this.descriptPath = descriptPath;
}
// Property accessors
@Id
@Column(name = "ID", unique = true, nullable = false, length = 50)
public String getId() {
return this.id;
}
public void setId(String id) {
this.id = id;
}
@Column(name = "BIRTHDAY", length = 7)
public Timestamp getBirthday() {
return this.birthday;
}
public void setBirthday(Timestamp birthday) {
this.birthday = birthday;
}
@Column(name = "DESCRIPT_PATH", length = 50)
public String getDescriptPath() {
return this.descriptPath;
}
public void setDescriptPath(String descriptPath) {
this.descriptPath = descriptPath;
}
@Override
public String toString() {
return "StuInf [id=" + id + ", birthday=" + birthday
+ ", descriptPath=" + descriptPath + "]";
}
}
package com.undergrowth.bean;
import java.sql.Timestamp;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import org.apache.logging.log4j.Level;
import com.undergrowth.utils.EntityManagerHelper;
/**
* A data access object (DAO) providing persistence and search support for
* StuInf entities. Transaction control of the save(), update() and delete()
* operations must be handled externally by senders of these methods or must be
* manually added to each of these methods for data to be persisted to the JPA
* datastore.
*
* @see com.undergrowth.bean.StuInf
* @author MyEclipse Persistence Tools
*/
public class StuInfDAO implements IStuInfDAO {
// property constants
public static final String DESCRIPT_PATH = "descriptPath";
private EntityManager getEntityManager() {
return EntityManagerHelper.getEntityManager();
}
/**
* Perform an initial save of a previously unsaved StuInf entity. All
* subsequent persist actions of this entity should use the #update()
* method. This operation must be performed within the a database
* transaction context for the entity's data to be permanently saved to the
* persistence store, i.e., database. This method uses the
* {@link javax.persistence.EntityManager#persist(Object)
* EntityManager#persist} operation.
*
*
* EntityManagerHelper.beginTransaction();
* StuInfDAO.save(entity);
* EntityManagerHelper.commit();
*
*
* @param entity
* StuInf entity to persist
* @throws RuntimeException
* when the operation fails
*/
public void save(StuInf entity) {
EntityManagerHelper.log("saving StuInf instance", Level.INFO, null);
try {
getEntityManager().persist(entity);
EntityManagerHelper.log("save successful", Level.INFO, null);
} catch (RuntimeException re) {
EntityManagerHelper.log("save failed", Level.INFO, re);
throw re;
}
}
/**
* Delete a persistent StuInf entity. This operation must be performed
* within the a database transaction context for the entity's data to be
* permanently deleted from the persistence store, i.e., database. This
* method uses the {@link javax.persistence.EntityManager#remove(Object)
* EntityManager#delete} operation.
*
*
* EntityManagerHelper.beginTransaction();
* StuInfDAO.delete(entity);
* EntityManagerHelper.commit();
* entity = null;
*
*
* @param entity
* StuInf entity to delete
* @throws RuntimeException
* when the operation fails
*/
public void delete(StuInf entity) {
EntityManagerHelper.log("deleting StuInf instance", Level.INFO, null);
try {
entity = getEntityManager().getReference(StuInf.class,
entity.getId());
getEntityManager().remove(entity);
EntityManagerHelper.log("delete successful", Level.INFO, null);
} catch (RuntimeException re) {
EntityManagerHelper.log("delete failed", Level.INFO, re);
throw re;
}
}
/**
* Persist a previously saved StuInf entity and return it or a copy of it to
* the sender. A copy of the StuInf entity parameter is returned when the
* JPA persistence mechanism has not previously been tracking the updated
* entity. This operation must be performed within the a database
* transaction context for the entity's data to be permanently saved to the
* persistence store, i.e., database. This method uses the
* {@link javax.persistence.EntityManager#merge(Object) EntityManager#merge}
* operation.
*
*
* EntityManagerHelper.beginTransaction();
* entity = StuInfDAO.update(entity);
* EntityManagerHelper.commit();
*
*
* @param entity
* StuInf entity to update
* @return StuInf the persisted StuInf entity instance, may not be the same
* @throws RuntimeException
* if the operation fails
*/
public StuInf update(StuInf entity) {
EntityManagerHelper.log("updating StuInf instance", Level.INFO, null);
try {
StuInf result = getEntityManager().merge(entity);
EntityManagerHelper.log("update successful", Level.INFO, null);
return result;
} catch (RuntimeException re) {
EntityManagerHelper.log("update failed", Level.INFO, re);
throw re;
}
}
public StuInf findById(String id) {
EntityManagerHelper.log("finding StuInf instance with id: " + id,
Level.INFO, null);
try {
StuInf instance = getEntityManager().find(StuInf.class, id);
return instance;
} catch (RuntimeException re) {
EntityManagerHelper.log("find failed", Level.INFO, re);
throw re;
}
}
/**
* Find all StuInf entities with a specific property value.
*
* @param propertyName
* the name of the StuInf property to query
* @param value
* the property value to match
* @param rowStartIdxAndCount
* Optional int varargs. rowStartIdxAndCount[0] specifies the the
* row index in the query result-set to begin collecting the
* results. rowStartIdxAndCount[1] specifies the the maximum
* number of results to return.
* @return List found by query
*/
@SuppressWarnings("unchecked")
public List findByProperty(String propertyName, final Object value,
final int... rowStartIdxAndCount) {
EntityManagerHelper.log("finding StuInf instance with property: "
+ propertyName + ", value: " + value, Level.INFO, null);
try {
final String queryString = "select model from StuInf model where model."
+ propertyName + "= :propertyValue";
Query query = getEntityManager().createQuery(queryString);
query.setParameter("propertyValue", value);
if (rowStartIdxAndCount != null && rowStartIdxAndCount.length > 0) {
int rowStartIdx = Math.max(0, rowStartIdxAndCount[0]);
if (rowStartIdx > 0) {
query.setFirstResult(rowStartIdx);
}
if (rowStartIdxAndCount.length > 1) {
int rowCount = Math.max(0, rowStartIdxAndCount[1]);
if (rowCount > 0) {
query.setMaxResults(rowCount);
}
}
}
return query.getResultList();
} catch (RuntimeException re) {
EntityManagerHelper.log("find by property name failed",
Level.INFO, re);
throw re;
}
}
public List findByDescriptPath(Object descriptPath,
int... rowStartIdxAndCount) {
return findByProperty(DESCRIPT_PATH, descriptPath, rowStartIdxAndCount);
}
/**
* Find all StuInf entities.
*
* @param rowStartIdxAndCount
* Optional int varargs. rowStartIdxAndCount[0] specifies the the
* row index in the query result-set to begin collecting the
* results. rowStartIdxAndCount[1] specifies the the maximum
* count of results to return.
* @return List all StuInf entities
*/
@SuppressWarnings("unchecked")
public List findAll(final int... rowStartIdxAndCount) {
EntityManagerHelper.log("finding all StuInf instances", Level.INFO,
null);
try {
final String queryString = "select model from StuInf model";
Query query = getEntityManager().createQuery(queryString);
if (rowStartIdxAndCount != null && rowStartIdxAndCount.length > 0) {
int rowStartIdx = Math.max(0, rowStartIdxAndCount[0]);
if (rowStartIdx > 0) {
query.setFirstResult(rowStartIdx);
}
if (rowStartIdxAndCount.length > 1) {
int rowCount = Math.max(0, rowStartIdxAndCount[1]);
if (rowCount > 0) {
query.setMaxResults(rowCount);
}
}
}
return query.getResultList();
} catch (RuntimeException re) {
EntityManagerHelper.log("find all failed", Level.INFO, re);
throw re;
}
}
}
package com.undergrowth.bean;
import java.sql.Timestamp;
import java.util.List;
/**
* Interface for StuInfDAO.
*
* @author MyEclipse Persistence Tools
*/
public interface IStuInfDAO {
/**
* Perform an initial save of a previously unsaved StuInf entity. All
* subsequent persist actions of this entity should use the #update()
* method. This operation must be performed within the a database
* transaction context for the entity's data to be permanently saved to the
* persistence store, i.e., database. This method uses the
* {@link javax.persistence.EntityManager#persist(Object)
* EntityManager#persist} operation.
*
*
* EntityManagerHelper.beginTransaction();
* IStuInfDAO.save(entity);
* EntityManagerHelper.commit();
*
*
* @param entity
* StuInf entity to persist
* @throws RuntimeException
* when the operation fails
*/
public void save(StuInf entity);
/**
* Delete a persistent StuInf entity. This operation must be performed
* within the a database transaction context for the entity's data to be
* permanently deleted from the persistence store, i.e., database. This
* method uses the {@link javax.persistence.EntityManager#remove(Object)
* EntityManager#delete} operation.
*
*
* EntityManagerHelper.beginTransaction();
* IStuInfDAO.delete(entity);
* EntityManagerHelper.commit();
* entity = null;
*
*
* @param entity
* StuInf entity to delete
* @throws RuntimeException
* when the operation fails
*/
public void delete(StuInf entity);
/**
* Persist a previously saved StuInf entity and return it or a copy of it to
* the sender. A copy of the StuInf entity parameter is returned when the
* JPA persistence mechanism has not previously been tracking the updated
* entity. This operation must be performed within the a database
* transaction context for the entity's data to be permanently saved to the
* persistence store, i.e., database. This method uses the
* {@link javax.persistence.EntityManager#merge(Object) EntityManager#merge}
* operation.
*
*
* EntityManagerHelper.beginTransaction();
* entity = IStuInfDAO.update(entity);
* EntityManagerHelper.commit();
*
*
* @param entity
* StuInf entity to update
* @return StuInf the persisted StuInf entity instance, may not be the same
* @throws RuntimeException
* if the operation fails
*/
public StuInf update(StuInf entity);
public StuInf findById(String id);
/**
* Find all StuInf entities with a specific property value.
*
* @param propertyName
* the name of the StuInf property to query
* @param value
* the property value to match
* @param rowStartIdxAndCount
* Optional int varargs. rowStartIdxAndCount[0] specifies the the
* row index in the query result-set to begin collecting the
* results. rowStartIdxAndCount[1] specifies the the maximum
* count of results to return.
* @return List found by query
*/
public List findByProperty(String propertyName, Object value,
int... rowStartIdxAndCount);
public List findByDescriptPath(Object descriptPath,
int... rowStartIdxAndCount);
/**
* Find all StuInf entities.
*
* @param rowStartIdxAndCount
* Optional int varargs. rowStartIdxAndCount[0] specifies the the
* row index in the query result-set to begin collecting the
* results. rowStartIdxAndCount[1] specifies the the maximum
* count of results to return.
* @return List all StuInf entities
*/
public List findAll(int... rowStartIdxAndCount);
}
控制台结果集:
2013-十二月-08 21:23:37 [main] INFO : finding all StuInf instances
[EL Info]: 2013-12-08 21:23:39.112--ServerSession(61130164)--EclipseLink, version: Eclipse Persistence Services - 2.4.2.v20130514-5956486
[EL Info]: connection: 2013-12-08 21:23:39.82--ServerSession(61130164)--file:/E:/learnsoftware/java/AndroidDevelop/myeclipse_2013_code/Lucene4.5.1/bin/_Lucene4.5.1 login successful
2013-十二月-08 21:23:40 [main] DEBUG: StuInf [id=9978F96DCAE447E59E7772D978E544F9, birthday=2013-12-08 21:12:56.0, descriptPath=E:\lucene\doc\oracle.doc]
2013-十二月-08 21:23:40 [main] DEBUG: StuInf [id=7FA82B9F2C4F4163AAEAB74EB3E2E79C, birthday=2013-12-08 21:12:56.0, descriptPath=E:\lucene\doc\google.doc]
2013-十二月-08 21:23:40 [main] DEBUG: StuInf [id=BA272904CA1A4ED1816965AB93424312, birthday=2013-12-08 21:12:56.0, descriptPath=E:\lucene\doc\baidu.doc]
2013-十二月-08 21:23:40 [main] INFO : 成功删除索引文件
2013-十二月-08 21:23:42 [main] INFO : 添加了3个索引
2013-十二月-08 21:23:42 [main] INFO : 找到了2个元素
2013-十二月-08 21:23:42 [main] ERROR: 开始显示结果!!
2013-十二月-08 21:23:42 [main] ERROR:
日期:2013-12-08 21:12:56.0
描述信息为:百度(Nasdaq简称:BIDU)是全球最大的中文搜索引擎,2000年1月由李彦宏、徐勇两人创立于北京中关村,
致力于向人们提供“简单,可依赖”的信息获取方式。“百度”二字源于中国宋朝词人辛弃疾的《青玉案?元夕》词句“众里寻他千百度”,
象征着百度对中文信息检索技术的执著追求。
2013-十二月-08 21:23:42 [main] ERROR:
日期:2013-12-08 21:12:56.0
描述信息为:谷歌公司(英语:Google Inc.,NASDAQ:GOOG、FWB:GGQ1,官方中文译名为谷歌),是一家美国的跨国科技企业,致力于互联网搜索、云计算、广告技术等领域,开发并提供大量基于互联网的产品与服务,其主要利润来自于AdWords等广告服务。 Google由当时在斯坦福大学攻读理工博士的拉里?佩奇和谢尔盖?布卢姆共同创建,因此两人也被称为“Google Guys”。1998年9月4日,Google以私营公司的形式创立,设计并管理一个互联网搜索引擎“Google搜索”;Google网站则于1999年下半年启用。2004年8月19日,Google公司的股票在纳斯达克上市,后来被称为“三驾马车”的公司两位共同创始人与出任首席执行官的埃里克?施密特在当时承诺:共同在Google工作至少二十年,即至2024年止。创始之初,Google官方的公司使命为“集成全球范围的信息,使人人皆可访问并从中受益”(To organize the world's information and make it universally accessible and useful);而非正式的口号则为“不作恶”(Don't be evil),由工程师阿米特?帕特尔(Amit Patel)所创,并得到了保罗?布赫海特的支持。Google公司的总部称为“Googleplex”,位于美国加州圣克拉拉县的芒廷维尤。2011年4月,佩奇接替施密特担任首席执行官。
2013-十二月-08 21:23:42 [main] INFO : updating StuInf instance
2013-十二月-08 21:23:42 [main] INFO : update successful
2013-十二月-08 21:23:42 [main] INFO : updating StuInf instance
2013-十二月-08 21:23:42 [main] INFO : update successful
2013-十二月-08 21:23:42 [main] INFO : updating StuInf instance
2013-十二月-08 21:23:42 [main] INFO : update successful
2013-十二月-08 21:23:42 [main] INFO : 找到了2个元素
2013-十二月-08 21:23:42 [main] ERROR: 开始显示结果!!
2013-十二月-08 21:23:42 [main] ERROR:
日期:2013-12-08 21:23:42.312
描述信息为:百度(Nasdaq简称:BIDU)是全球最大的中文搜索引擎,2000年1月由李彦宏、徐勇两人创立于北京中关村,
致力于向人们提供“简单,可依赖”的信息获取方式。“百度”二字源于中国宋朝词人辛弃疾的《青玉案?元夕》词句“众里寻他千百度”,
象征着百度对中文信息检索技术的执著追求。
2013-十二月-08 21:23:42 [main] ERROR:
日期:2013-12-08 21:23:42.312
描述信息为:谷歌公司(英语:Google Inc.,NASDAQ:GOOG、FWB:GGQ1,官方中文译名为谷歌),是一家美国的跨国科技企业,致力于互联网搜索、云计算、广告技术等领域,开发并提供大量基于互联网的产品与服务,其主要利润来自于AdWords等广告服务。 Google由当时在斯坦福大学攻读理工博士的拉里?佩奇和谢尔盖?布卢姆共同创建,因此两人也被称为“Google Guys”。1998年9月4日,Google以私营公司的形式创立,设计并管理一个互联网搜索引擎“Google搜索”;Google网站则于1999年下半年启用。2004年8月19日,Google公司的股票在纳斯达克上市,后来被称为“三驾马车”的公司两位共同创始人与出任首席执行官的埃里克?施密特在当时承诺:共同在Google工作至少二十年,即至2024年止。创始之初,Google官方的公司使命为“集成全球范围的信息,使人人皆可访问并从中受益”(To organize the world's information and make it universally accessible and useful);而非正式的口号则为“不作恶”(Don't be evil),由工程师阿米特?帕特尔(Amit Patel)所创,并得到了保罗?布赫海特的支持。Google公司的总部称为“Googleplex”,位于美国加州圣克拉拉县的芒廷维尤。2011年4月,佩奇接替施密特担任首席执行官。
2013-十二月-08 21:23:42 [main] INFO : 找到了2个元素
2013-十二月-08 21:23:42 [main] ERROR: 开始显示结果!!
2013-十二月-08 21:23:42 [main] ERROR:
日期:2013-12-08 21:12:56.0
描述信息为:Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。到目前仍在数据库市场上占有主要份额。劳伦斯?埃里森和他的朋友,之前的同事Bob Miner和Ed Oates在1977年建立了软件开发实验室咨询公司(SDL,Software Development Laboratories)。
2013-十二月-08 21:23:42 [main] ERROR:
日期:2013-12-08 21:23:42.308
描述信息为:Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。到目前仍在数据库市场上占有主要份额。劳伦斯?埃里森和他的朋友,之前的同事Bob Miner和Ed Oates在1977年建立了软件开发实验室咨询公司(SDL,Software Development Laboratories)。
oracle 表结构
--创建学生信息表
drop table stu_inf;
create table stu_inf(
id varchar2(50) default sys_guid(),
birthday date default sysdate,
descript_path varchar2(50),
primary key (id)
);
--添加注释
comment on column stu_inf.id is '默认值为guid,产生一个唯一的标示符';
comment on column stu_inf.descript_path is '用于存放描述个人信息的word路径';
insert into stu_inf(descript_path) values('E:\lucene\doc\oracle.doc');
insert into stu_inf(descript_path) values('E:\lucene\doc\google.doc');
insert into stu_inf(descript_path) values('E:\lucene\doc\baidu.doc');