如何用java实现lucene(只使用,不求甚解版-_-")
1.前提  lucene有7个包需要导入:analysis,document,index,queryParser,search,store,util
  
2.建立索引  IndexWriter writer = new IndexWriter("E:/index", new StandardAnalyze(),true,MaxFieldLength.UNLIMITED); //true代表覆盖原先数据,maxFieldLength用来限制Field的大小
  Document doc = new Document(); 
  doc.add(new Field("title", "lucene introduction", Field.Store.YES, Field.Index.ANALYZED,
  Field.TermVector.WITH_POSITIONS_OFFSETS)); 
  doc.add(new Field("time", "60", Field.Store.YES, Field.Index.ANALYZED,
  Field.TermVector.WITH_POSITIONS_OFFSETS)); 
  writer.addDocument(doc); 
  writer.optimize(); //优化
  writer.close();
  
3.搜索  IndexSearcher searcher= new IndexSearcher("E:/index") Query query = new TermQuery(new Term("title", "lucene"));//单个字节查询
  //Query query = new FuzzyQuery(new Term("title", "lucena"));//模糊查询 
  //Query query = new WildcardQuery(new Term("title", "lu*"));// 通配符查询 ?代表一个字符,*代表0到多个字符
  //BooleanQuery query = new BooleanQuery();//条件查询
  //BooleanQuery qson1 = new BooleanQuery();
  //Query q1 = new TermQuery(new Term("title", "lucene"));
  //qson1.add(q1, Occur.MUST);//MUST是必须满足的
  //BooleanQuery qson2 = new BooleanQuery();
  //Query q2= new TermQuery(new Term("sex", "woman"));
  //qson2 .add(qson1, Occur.MUST_NOT);//MUST_NOT是必须不满足
  //query.add(qson1, Occur.SHOULD);
  //query.add(qson2, Occur.SHOULD);//SHOULD代表满足qson1或者满足qson2都可以
  //PhraseQuery query = new PhraseQuery();//近距离查询
  //query.setSlop(5);//距离设置为5
  //query.add(new Term("title", "lucene"));
  //query.add(new Term("title", "introduction"));//查询出title中lucene和introduction距离不超过5个字符的结果
  //Query query = new PrefixQuery(new Term("title", "lu"));//WildcardQuery的lu*一样
  //RangeQuery query = new RangeQuery(new Term("time", "50"),new Term("time", "60"), true);
  //true代表[50,60],false代表(50,60)
  Hits hits = searcher.search(query);
  for (int i = 0; i < hits.length(); i++) {
  Document d = hits.doc(i);
  String title= d.get("title");
  System.out.print(title+ " ");
  }
  这样,基本上就可以使用了

解决方案 »

  1.   

    请问楼主,怎样使用Lucene来实现一个网站的站内搜索。希望楼主可以详细一点,谢谢。。
      

  2.   

    怎样实现JSP网页版的中文检索呢?
      

  3.   

    如果要搜索中文的话,是需要其他的解析和优化器的支持的,我用过庖丁,但是庖丁支持的lucene的版本低一些。
    一般来说是这样,在将数据录入到数据库的时候,先用lucene建立索引,这个索引是以一个文件的形式存在的。
    索引中需要把这条数据对应的id记录下来。
    然后在收到搜索请求以后,根据提交的关键字到索引中做查找,查找到的结果是数据库的id,然后再根据id到数据库中查源数据。
    网上有很多资料,随便找一个,改一改就能用(如果你不搜索中文的话)。