首页 > 代码库 > Lucene小例子
Lucene小例子
package org.itat.test;import java.io.File;import java.io.FileReader;import java.io.IOException;import org.apache.lucene.analysis.standard.StandardAnalyzer;import org.apache.lucene.document.Document;import org.apache.lucene.document.Field;import org.apache.lucene.index.CorruptIndexException;import org.apache.lucene.index.IndexReader;import org.apache.lucene.index.IndexWriter;import org.apache.lucene.index.IndexWriterConfig;import org.apache.lucene.queryParser.ParseException;import org.apache.lucene.queryParser.QueryParser;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.apache.lucene.store.Directory;import org.apache.lucene.store.FSDirectory;import org.apache.lucene.store.LockObtainFailedException;import org.apache.lucene.store.RAMDirectory;import org.apache.lucene.util.Version;public class HelloLucene{ /** * 建立索引 * @throws IOException * @throws CorruptIndexException */ public void index() throws CorruptIndexException, IOException { //1. 创建Directory Directory directory = new RAMDirectory();//建立在内存中的 //Directory directory = FSDirectory.open(new File("d:/lucene1/index01")); //2. 创建indexWriter IndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_35, new StandardAnalyzer(Version.LUCENE_35)); IndexWriter writer = null; try { writer = new IndexWriter(directory, iwc); //3. 创建document对象 Document doc = null; //4. 为document添加Field File f = new File("D:/lucene"); for(File file : f.listFiles()) { doc = new Document(); doc.add(new Field("content", new FileReader(file))); doc.add(new Field("filename", file.getName(), Field.Store.YES, Field.Index.NOT_ANALYZED)); doc.add(new Field("path",file.getAbsolutePath(), Field.Store.YES, Field.Index.NOT_ANALYZED)); //5. 通过IndexWriter添加文档到索引中 writer.addDocument(doc); } } catch (CorruptIndexException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } catch (LockObtainFailedException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } catch (IOException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } finally { if(writer != null) { writer.close(); } } } @SuppressWarnings("resource") public void search() throws ParseException { //1. 创建Directory Directory directory; IndexReader reader; try { directory = FSDirectory.open(new File("d:/lucene1/index01")); //2. 创建indexReader reader = IndexReader.open(directory); //3. 根据indexReader 创建IndexSearcher //4. 创建搜索的Query QueryParser parser = new QueryParser(Version.LUCENE_35, "content", new StandardAnalyzer(Version.LUCENE_35)); //创建parser来确定要搜索文件的内容,第二个参数 表示搜索的域 //创建query,表示搜索域为content中包含java的文档 Query query = parser.parse("com"); //5. 根据sea人撤人搜索并且返回TopDocs TopDocs tds = new IndexSearcher(reader).search(query, 100); //6. 根据TopDocs 获取ScoreDOc对象 ScoreDoc[] sds = tds.scoreDocs; for(ScoreDoc sd : sds) { //7. 根据searcher和scoreDoc对象获取具体的Document对象 Document d = new IndexSearcher(reader).doc(sd.doc); //8. 根据Document对象获取需要的值 System.out.println(d.get("filename") + "[" + d.get("path") + "]"); } //9. 关闭reader reader.close(); } catch (IOException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } }}
测试类:
package org.itat.test;import java.io.IOException;import org.apache.lucene.index.CorruptIndexException;import org.apache.lucene.queryParser.ParseException;import org.junit.Test;public class TestLucene{ @Test public void testIndex() throws CorruptIndexException, IOException, ParseException { HelloLucene hl = new HelloLucene(); hl.index(); } @Test public void testSearcher() throws ParseException { HelloLucene hl = new HelloLucene();// hl.index(); hl.search(); }}
Lucene小例子
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。