lucene 2.2 简单例子

论坛 期权论坛 脚本     
匿名技术用户   2021-1-12 13:51   313   0
package com.jiepu.lucene_23;



import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.Term;
import org.apache.lucene.search.Hits;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.PrefixQuery;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.RangeQuery;

/**
 * lucene-core-2.2.0.jar
 * @author 542335496@qq.com
 *
 */

public class LuceneExample {

 public static void main(String[] args) throws Exception {

  IndexWriter writer = new IndexWriter("E:/index",
    new StandardAnalyzer(), true); // true代表覆盖原先数据,maxFieldLength用来限制Field的大小
  for (int i = 0; i < 10; i++) {
   Document doc = new Document();
   doc.add(new Field("title", "lucene introduction" + i,
     Field.Store.YES, Field.Index.TOKENIZED,
     Field.TermVector.WITH_POSITIONS_OFFSETS));
   doc.add(new Field("time", "60" + i, Field.Store.YES,
     Field.Index.TOKENIZED,
     Field.TermVector.WITH_POSITIONS_OFFSETS));
   writer.addDocument(doc);
  }

  writer.optimize(); // 优化
  writer.close();

  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(q2, 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","introduction1"));//查询出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", "690"), 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.println(title + " ");
  }
 }

}

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP