luence入门pojo

第一阶段:

1.建立普通POJO类

package org.yinpeng.test.lucence;

public class User {

 private int id;

 private String firstName;

 private String lastName;
 
 public User(){
  
 }
 
 public User(int id, String firstName, StringlastName) {

  this.id = id;

  this.firstName =firstName;

  this.lastName =lastName;
 }

 public int getId() {
  return id;
 }

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

 public String getFirstName() {
  return firstName;
 }

 public void setFirstName(String firstName){
  this.firstName =firstName;
 }

 public String getLastName() {
  return lastName;
 }

 public void setLastName(String lastName){
  this.lastName = lastName;
 }

}
2.建立索引,以及查询方法

package org.yinpeng.test.lucence;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.Field.Index;
import org.apache.lucene.document.Field.Store;
import org.apache.lucene.index.CorruptIndexException;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.index.IndexWriterConfig.OpenMode;
import org.apache.lucene.queryParser.ParseException;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.store.LockObtainFailedException;
import org.apache.lucene.util.Version;

public class UserSearch {

 private static final File INDEX_DIR = newFile("e:\\lucene\\index");

 private Analyzer analyzer = newStandardAnalyzer(Version.LUCENE_35);

 public voidcreateIndex(List<User> list) throwsCorruptIndexException,
   LockObtainFailedException,IOException {

  IndexWriter writer =openWriter();

  try {

   for (Useruser : list) {

    Documentdocument = buildDocument(user);

    writer.addDocument(document);
   }
  } finally {

   writer.close();
  }
 }

 private IndexWriter openWriter() throwsCorruptIndexException,
   LockObtainFailedException,IOException {

  IndexWriterConfig iwc = newIndexWriterConfig(Version.LUCENE_35,
    analyzer);

  iwc.setOpenMode(OpenMode.CREATE);

  return newIndexWriter(FSDirectory.open(INDEX_DIR), iwc);
 }

 private Document buildDocument(User user){

  Document document = newDocument();

  Field id = new Field("id",String.valueOf(user.getId()),
    Field.Store.YES,Field.Index.ANALYZED);
  Field lastName = newField("lastName", user.getLastName(),
    Field.Store.YES,Field.Index.ANALYZED);
  Field firstName = newField("firstName", user.getFirstName(),
    Field.Store.YES,Field.Index.ANALYZED);

  document.add(firstName);
  document.add(lastName);
  document.add(id);

  return document;
 }

 

 public List search(String fieldName, Stringcriteria)
   throwsCorruptIndexException, IOException, ParseException {

  IndexReader reader =IndexReader.open(FSDirectory.open(INDEX_DIR));

  IndexSearcher searcher = newIndexSearcher(reader);

  List<User>list = new ArrayList<User>();

  try {

   Queryquery = buildQuery(fieldName, criteria);

   TopDocstopDocs = searcher.search(query, 10);

   int total= topDocs.totalHits;

   System.out.println("total=" + total);
   
   ScoreDoc[]scoreDocs = topDocs.scoreDocs;
   
   for(int i =0;i<scoreDocs.length;i++){
    
    Documentdoc = searcher.doc(scoreDocs[i].doc);
    
    Useruser = new User();
    
    user.setId(Integer.valueOf(doc.get("id")));
    
    user.setFirstName(doc.get("firstName"));
    
    user.setLastName(doc.get("lastName"));
    
    list.add(user);
   }
   
  } finally {

   reader.clone();
  }
  return list;
 }

 private Query buildQuery(String fieldName,String criteria)
   throwsParseException {

  QueryParser parser = newQueryParser(Version.LUCENE_35, fieldName,
    analyzer);

  returnparser.parse(criteria);
 }
}
3.主函数入口

package org.yinpeng.test.lucence;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.apache.lucene.index.CorruptIndexException;
import org.apache.lucene.queryParser.ParseException;
import org.apache.lucene.store.LockObtainFailedException;

public class UserRun {

 public static void main(String[] args) {

  UserRun.init();

  try {
   UserRun.search();
  } catch (CorruptIndexExceptione) {
   // TODOAuto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODOAuto-generated catch block
   e.printStackTrace();
  } catch (ParseException e){
   // TODOAuto-generated catch block
   e.printStackTrace();
  }
 }

 public static void init() {

  List<User>list = new ArrayList<User>();
  list.add(new User(1, "大","象"));
  list.add(new User(12, "老","象"));
  list.add(new User(13, "小","象"));
  list.add(new User(2, "老","虎"));
  list.add(new User(3, "毛","二逼"));
  list.add(new User(4, "熊","三炮"));
  list.add(new User(6, "高","象"));
  list.add(new User(2, "搞","对象"));
  list.add(new User(5, "处","象"));
  list.add(new User(7, "大","象"));
  list.add(new User(9, "大","象"));
  list.add(new User(11, "大","象"));
  list.add(new User(111, "大","象"));
  list.add(new User(13, "大","象"));
  list.add(new User(122, "大","象"));
  list.add(new User(133, "大","象"));

  UserSearch us = newUserSearch();

  try {
   us.createIndex(list);
   System.out.println("createsuccess!");
  } catch (CorruptIndexExceptione) {
   // TODOAuto-generated catch block
   e.printStackTrace();
  } catch(LockObtainFailedException e) {
   // TODOAuto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODOAuto-generated catch block
   e.printStackTrace();
  }
 }

 public static void search() throwsCorruptIndexException, IOException,
   ParseException{

  UserSearch us = newUserSearch();
  
  // 查询条件
  List<User>list = us.search("lastName", "象");
  if (list.size()> 0) {
   System.out.println("找到:"+ list.size() + "个结果! ");
   for (Userinfo : list) {
    System.out.println("id="+ info.getId() + ",name="
      +info.getFirstName() + info.getLastName());
   }
  } else {
   System.out.println("没有找到结果");
  }

 

}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值