Lucene——入门案例
来源:互联网 发布:java坐标点的构造函数 编辑:程序博客网 时间:2024/05/18 01:26
今天开始学习lucene
在lib里面导入两个包 junit.jar lucene-core-3.50.jar
六步
首先建立索引Directory、IndexWriter两个前提
创建Document
为Dcument增加Field
用Writer写入Document
关闭writer
九步
首先建立Directory、IndexReader两个前提
其次用IndexReader获取IndexSearcher
QueryParse
Query
TopDocs
ScoreDocs
Document
关闭reader
创建在哪个域中搜索什么内容的query
最终目的还是得到Document
关闭reader
HelloLucene.java
package org.itat.test;import java.io.File;import java.io.FileReader;import java.io.IOException;import org.apache.commons.io.FileUtils;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.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 {/** * 建立是索引 */public void index() {IndexWriter writer = null;try {// 1,创建索引Directory// Directory directory = new RAMDirectory();放在内存中Directory directory = FSDirectory.open(new File("e:/lucene/index_01"));// 放在硬盘中// 2,创建IndexWriterIndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_35,new StandardAnalyzer(Version.LUCENE_35));writer = new IndexWriter(directory, iwc);// 3,创建文档DocumentDocument document = null;// 4,为Document添加域FieldFile file = new File("e:/lucene/example");for (File f : file.listFiles()) {document = new Document();//String content=FileUtils.readFileToString(f);//System.out.println(content);//commons-io-2.1.jar这个包很好用//1.txt和2.txt合二为一了最后document.add(new Field("content", new FileReader(f)));document.add(new Field("filename", f.getName(),Field.Store.YES, Field.Index.NOT_ANALYZED));document.add(new Field("path", f.getAbsolutePath(),Field.Store.YES, Field.Index.NOT_ANALYZED));// 5,通过indexWriter吧文档添加到索引directory中writer.addDocument(document);}} catch (CorruptIndexException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (LockObtainFailedException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {if (writer != null)try {writer.close();} catch (CorruptIndexException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}/** * 搜索 */public void search() {try {// 1.创建DirectoryDirectory directory = FSDirectory.open(new File("e:/lucene/index_01"));// 2.创建IndexReaderIndexReader reader = IndexReader.open(directory);// 3.根据IndexReader创建IndexSercherIndexSearcher searcher = new IndexSearcher(reader);// 4.创建搜索的Query// 创建parse来确定搜索文件的内容,第二个参数是搜索的域QueryParser parser = new QueryParser(Version.LUCENE_35, "content",new StandardAnalyzer(Version.LUCENE_35));// 创建query,表示搜索域为content包含的内容Query query = parser.parse("java");// 5.根据sercher搜索并返回TopDocsTopDocs tds = searcher.search(query, 10);// 6.根据TopDocs获取ScoreDoc对象ScoreDoc sds[] = tds.scoreDocs;for (ScoreDoc sd : sds) {// 7.根据sercher对象和Scoredoc对象获取Document对象Document d = searcher.doc(sd.doc);// 8.根据Document对象获取需要的值System.out.println(d.get("filename") + "[" + d.get("path")+ "]");}// 9.关闭readerreader.close();} catch (Exception e) {e.printStackTrace();// TODO: handle exception}}}
TestLucene.java
package org.itat.test;import org.junit.Test;public class TestLucene {@Testpublic void testIndex(){ HelloLucene helloLucene=new HelloLucene(); helloLucene.index();}@Testpublic void testSearch(){ HelloLucene helloLucene=new HelloLucene(); helloLucene.search();}}
- Lucene——入门案例
- Lucene创建索引入门案例
- Lucene创建索引入门案例
- Lucene之入门案例-yellowcong
- 2.lucene入门案例(lucene6.0)
- JAVA_WEB项目之Lucene检索框架入门案例
- Kaggle入门——Titanic案例
- struts2(一)——入门案例
- 【JavaEE—Hibernate】Hibernate入门案例
- Lucene学习笔记(一)——入门示例
- lucene 入门
- lucene入门
- lucene入门
- Lucene入门
- LUCENE入门
- Lucene入门
- Lucene入门
- Lucene入门
- HDU2504:又见GCD
- 什么是五声音阶
- Linux下autoconf和automake使用
- 【转】C语言的位运算的优势
- u-boot-2012.04.01移植到TQ2440(四):移植网卡DM9000
- Lucene——入门案例
- linux终端快捷键
- linux shell 逻辑运算符、逻辑表达式详解
- LeetCode 4Sum
- nginx安装脚本
- Excel文件导入SqlServer最简单方法!(超简单、超实用)
- linux的errno
- Lucene——索引小练
- Mysql Innodb 学习经验