Java如何使用lucene开发搜索引擎

最近忽然心血来潮想用java写个搜索引擎,经过一天的研究也有小成,把自己写的一个简单的Hello word发给大家看看,希望对大家有所帮助.关于lucene的架包可以在apache的官方网站下载到,如果需要问我要.如果对lucene不了解的可以先看一下我的利用lucene搜索这篇文章,或则到网上去查一下资料.
/*
 * author:shijiajia
 * Created on 2006-8-30
 */
package com.client;

import java.util.Date;

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.BooleanQuery;
import org.apache.lucene.search.Hits;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.TermQuery;

public class BooleanQueryTest1

  /**

   *
   * @param args
   * @throws Exception
   */ 
  public static void main (String [] args) throws Exception {
    Document doc1 = new Document();
    doc1.add(Field.Text("name", "word1 word2 word3"));
    doc1.add(Field.Keyword("title", "doc1"));
   
    Document doc2 = new Document();
    doc2.add(Field.Text("name", "word1 word4 word5"));
    doc2.add(Field.Keyword("title", "doc2"));
   
    Document doc3 = new Document();
    doc3.add(Field.Text("name", "word1 word2 word6"));
    doc3.add(Field.Keyword("title", "doc3"));
   
    Document doc4 = new Document();
    doc4.add(Field.Text("name", "中人民共和国"));
    doc4.add(Field.Keyword("title", "doc4"));
    IndexWriter writer = new IndexWriter("c:\\index", new StandardAnalyzer(), true);
    writer.addDocument(doc1);
    writer.addDocument(doc2);
    writer.addDocument(doc3);
    writer.addDocument(doc4);
    writer.close();
   
    Query query1 = null;
    Query query2 = null;
    BooleanQuery query = null;
    Hits hits = null;
   
    IndexSearcher searcher = new IndexSearcher("c:\\index");
   
    query1 = new TermQuery(new Term("name","人"));
    query2 = new TermQuery(new Term("name","word2"));
   
    // 构造一个布尔查询
    query = new BooleanQuery();
   
    // 添加两个子查询
    query.add(query1, false, false);
    query.add(query2, false, false);
    /
    Date start = new Date();
    hits = searcher.search(query);
    Date end = new Date();
    System.out.println("总共耗时" + (end.getTime()-start.getTime()) + "毫秒" );
    ///
    printResult(hits, "word1和word2");
   
  }
 
  public static void printResult(Hits hits, String key) throws Exception
  {
    System.out.println("查找 \"" + key + "\" :");
    if (hits != null)
    {
      if (hits.length() == 0)
      {
        System.out.println("没有找到任何结果");
      }
      else
      {
        System.out.println("找到" + hits.length() + "个结果");
        for (int i = 0; i < hits.length(); i++)
        {
          Document d = hits.doc(i);
          String dname = d.get("title");
          System.out.print(dname + "   ");
        }
        System.out.println();
        System.out.println();
      }
    }
  }
}
推荐学lunece的人看一下lucene in action这本书,很不错~~~~~~

转载于:https://www.cnblogs.com/bysshijiajia/archive/2006/09/08/lucene.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值