Lucene入门实例

来源:互联网 发布:mysql 特殊字符转义 编辑:程序博客网 时间:2024/06/05 20:18
package cn.lucene.helloworld;import java.io.File;import org.apache.lucene.analysis.Analyzer;import org.apache.lucene.analysis.standard.StandardAnalyzer;import org.apache.lucene.document.Document;import org.apache.lucene.index.IndexWriter;import org.apache.lucene.index.IndexWriter.MaxFieldLength;import org.apache.lucene.queryParser.MultiFieldQueryParser;import org.apache.lucene.queryParser.QueryParser;import org.apache.lucene.search.Filter;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.junit.Test;import cn.lucene.utils.LuceneUtil;public class HelloWorld {String filePath = "F:\\workspace\\Lucene\\resource\\resource.txt";String indexPath = "F:\\workspace\\Lucene\\indexPath";Analyzer analyzer = new StandardAnalyzer();@Test//建立索引public void createIndex() throws Exception{IndexWriter indexWriter = new IndexWriter(indexPath, analyzer,false, MaxFieldLength.LIMITED);indexWriter.addDocument(LuceneUtil.fileToDocument(new File(filePath)));indexWriter.close();}@Test//根据关键字查询索引库public void query() throws Exception{String queryString = "document";IndexSearcher indexSearcher = new IndexSearcher(indexPath);String[] fields = {"name","content"}; QueryParser parser = new  MultiFieldQueryParser(fields, analyzer);Query query = parser.parse(queryString);Filter filter = null;TopDocs topDocs = indexSearcher.search(query, filter, 1000);for(ScoreDoc scoreDoc : topDocs.scoreDocs){int index = scoreDoc.doc;Document document = indexSearcher.doc(index);LuceneUtil.printDocument(document);}}}

工具类:LuceneUtil.java

package cn.lucene.utils;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.InputStreamReader;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;public class LuceneUtil {public static Document fileToDocument(File file){Document document = new Document();document.add(new Field("name", file.getName(), Store.YES, Index.ANALYZED));document.add(new Field("content", getFileContent(file), Store.YES, Index.ANALYZED));return document;}public static String getFileContent(File file) {StringBuffer sb = new StringBuffer();try {BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file)));String str = null;while((str = br.readLine()) != null){sb.append(str);}} catch (Exception e) {throw new RuntimeException(e);}return sb.toString();}public static void printDocument(Document document){System.out.println("-------------start-----------------");System.out.println("name:" + document.get("name"));System.out.println("content:" + document.get("content"));System.out.println("-------------end-----------------");}}



 

原创粉丝点击