lucene简单使用

/* 生成索引文件*/
package com.alipay.dtcrawler.test;

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.index.IndexWriter;

import java.io.*;
import java.util.Date;

public class Test {
public static void main(String args[]) throws IOException {
File fileDir = new File(“D:\test_lucene\lucene”);
File indexDir = new File(“D:\test_lucene\index”);

    Analyzer luceneAnalyzer = new StandardAnalyzer();
    IndexWriter indexWriter = new IndexWriter(indexDir,luceneAnalyzer,true);

    File[] textFile = fileDir.listFiles();
    long startTime = new Date().getTime();
    for (int i =0;i<textFile.length;i++){
        if (textFile[i].isFile() &&textFile[i].getName().endsWith(".txt")){
            System.out.println("File"+textFile[i].getCanonicalPath()+"正在被索引");
            String tmp = fileReaderAll(textFile[i].getCanonicalPath(), "utf-8");
            System.out.println(tmp);
            Document document = new Document();
            Field fieldPath = new Field("path",textFile[i].getPath(),Field.Store.YES,Field.Index.NO);
            Field fieldBody = new Field("body",tmp,Field.Store.YES,Field.Index.TOKENIZED,Field.TermVector.WITH_OFFSETS);
            document.add(fieldPath);
            document.add(fieldBody);
            indexWriter.addDocument(document);
        }
    }
    indexWriter.optimize();
    indexWriter.close();

    long endTime = new Date().getTime();
    System.out.println("这花费了"+(endTime - startTime)+"毫秒来把文档增加到索引里面去!"+fileDir.getPath());
}
public static String fileReaderAll(String fileName, String charset) throws IOException {
    BufferedReader reader = new BufferedReader( new InputStreamReader(
            new  FileInputStream(fileName), charset));
    String line = new String();
    String temp = new String();
    while ((line =reader.readLine())!= null){
        temp += line;
    }
    reader.close();
    return temp;
}

}

/* 根据索引查询数据 */
package com.alipay.dtcrawler.test;

import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.Hits;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;

import java.io.IOException;

public class TestLucene {
public static void main(String args[]) throws IOException {
Hits hits = null;
String tmp =”姚”;
Query query =null;

    IndexSearcher searcher = new IndexSearcher("D:\\test_lucene\\index");
    Analyzer analyzer = new StandardAnalyzer();
    try {
        QueryParser qp = new QueryParser("body",analyzer);
        query = qp.parse(tmp);
    }catch (Exception e){
        e.printStackTrace();
    }

    if (searcher !=null){
        hits=searcher.search(query);
        if (hits.length()>0){
            System.out.println("共搜索到:"+hits.length()+"条数据;");
            for (int i=0;i<hits.length();i++){
                System.out.println("搜索到:"+hits.doc(i));
            }
        }
    }
}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值