Lucene 6.10 初级 创建索引库和利用索引库进行搜索!
2017-02-18 11:50
453 查看
Lucene是一个全文检索工具包
笔者这几天刚好在学,做了一些笔记。
首先创建索引库
}
建立好了索引库后可以用Luke查看索引库中的内容
接下来我们利用Lucene中的方法来进行搜索。
结果为
成功。
笔者这几天刚好在学,做了一些笔记。
首先创建索引库
package per.cr.lucene; import java.io.File; import java.nio.file.FileSystems; import java.util.ArrayList; import java.util.List; import org.apache.commons.io.FileUtils; 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.Store; import org.apache.lucene.document.TextField; import org.apache.lucene.index.IndexWriter; import org.apache.lucene.index.IndexWriterConfig; import org.apache.lucene.store.FSDirectory; import org.junit.Test; public class IndexMangers{ @Test public void testCreatLucene() throws Exception {
//0.创建list来保存多个document List<Document> doclist = new ArrayList<Document>(); // 1.指定文件所在路径 File files = new File("F:\\dic"); // 2.抓取此文件夹中的所有文件 for (File file : files.listFiles()) { // 3.抓取文件名称 String fileName = file.getName(); // 4.抓取文件内容 String fileContext = FileUtils.readFileToString(file); // 5.抓取文件大小 Long fileSize = file.length(); // 6.获取到文件全部信息后,创建文档来保存他们的信息。 Document doc = new Document(); // 7.将文本文件所有信息转化成键值对的格式 TextField nameField = new TextField("fileName", fileName, Store.YES); TextField contextField = new TextField("fileContext", fileContext, Store.YES); TextField sizeField = new TextField("fileSize", fileSize.toString(), Store.YES); // 8.将转化好的对象加入文档中 doc.add(nameField); doc.add(contextField); doc.add(sizeField); //9.将doc文档加入到doclist中去 doclist.add(doc); } //10.创建标准分词器对已转化的文档进行分词,标准分词器对英文支持好,中文只能分成一个字 Analyzer analyzer = new StandardAnalyzer(); //12.创建分词文件存放路径 FSDirectory dictionary = FSDirectory.open(FileSystems.getDefault().getPath("F:\\dir")); //13.创建indexWrite对象的配置对象 IndexWriterConfig indexWriterConfig = new IndexWriterConfig(analyzer); //11.创建索引和文档写对象 IndexWriter indexWriter = new IndexWriter(dictionary,indexWriterConfig); //14.将文档加入索引对象完成对文档的索引 for(Document doc : doclist){ indexWriter.addDocument(doc); } //15.提交 indexWriter.commit(); //16.关闭 indexWriter.close(); }
}
建立好了索引库后可以用Luke查看索引库中的内容
接下来我们利用Lucene中的方法来进行搜索。
package per.cr.lucene; import java.nio.file.FileSystems; import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.document.Document; import org.apache.lucene.index.DirectoryReader; import org.apache.lucene.queryparser.classic.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.FSDirectory; import org.junit.Test; public class IndexSearch { @Test public void search() throws Exception { //1.创建分词器,分词器必须与你创建索引库时所使用的分词器一致 StandardAnalyzer standardAnalyzer = new StandardAnalyzer(); //2.设置默认搜索域 //作用:如果搜索时如果没有指定域只有搜索关键词这时系统会从默认搜索域中搜索 String Defsearch = "fileContext"; //3.获取查询对象 QueryParser queryParser = new QueryParser(Defsearch, standardAnalyzer); //4.创建查询语句 Query query = queryParser.parse("fileName:2017"); //5.指定索引库 FSDirectory dictionary = FSDirectory.open(FileSystems.getDefault().getPath("F:\\dir")); //6.创建读取索引库对象 DirectoryReader directoryReader = DirectoryReader.open(dictionary); //7.创建索引库搜索对象 IndexSearcher indexSearcher = new IndexSearcher(directoryReader); //8.开始搜索 //设置结果数目限制 int resNum = 10; TopDocs topDocs = indexSearcher.search(query, resNum); //9.将搜索结果拆分获取结果集 ScoreDoc[] scoreDocs = topDocs.scoreDocs; //10.打印搜索结果 for(ScoreDoc scoreDoc : scoreDocs){ //获取结果的文档编号 int docId = scoreDoc.doc; //通过编号去获取对应文档 Document document = directoryReader.document(docId); //打印文档内容 System.out.println("fileName: "+ document.get("fileName")); System.out.println("fileSize: "+ document.get("fileSize")); System.out.println("============================================"); } } }
结果为
fileName: localhost_access_log.2017-01-03.txt fileSize: 12500 ============================================ fileName: localhost_access_log.2017-01-04.txt fileSize: 114411 ============================================ fileName: localhost_access_log.2017-01-05.txt fileSize: 183246 ============================================ fileName: localhost_access_log.2017-01-06.txt fileSize: 7599 ============================================ fileName: localhost_access_log.2017-01-07.txt fileSize: 318111 ============================================ fileName: localhost_access_log.2017-01-08.txt fileSize: 11173 ============================================ fileName: localhost_access_log.2017-02-13.txt fileSize: 27185
成功。
相关文章推荐
- 利用Lucene.net搭建站内搜索(3)---创建索引
- 利用Lucene.net搭建站内搜索(3)---创建索引
- 利用Lucene.net搭建站内搜索(3)---创建索引
- 使用lucene3.6创建索引和实现简单搜索
- 利用Lucene.net搜索引擎进行多条件搜索的做法
- 基于Lucene多索引进行索引和搜索
- 利用Lucene.net搜索引擎进行多条件搜索的做法
- 利用Lucene.net搜索引擎进行多条件搜索的做法
- 利用Lucene.net搜索引擎进行多条件搜索
- 使用lucene3.6创建索引和实现简单搜索
- 一个辅助Lucene对数字类型进行索引和搜索的工具类
- Lucene在多个索引上进行搜索
- 利用Lucene.net搜索引擎进行多条件搜索的做法
- Lucene.Net核心类简介,创建索引,搜索,Lucene高亮组建演示,Rss获得最新帖子,只索引帖子的有意义部分,在AddDocument之前先移除旧有文档.
- 使用Lucene对建立的索引进行搜索
- 利用Lucene.net搜索引擎进行多条件搜索的做法
- 利用Lucene.net搜索引擎进行多条件搜索的做法
- 利用Lucene.net搜索引擎进行多条件搜索的做法
- Lucene.net搜索——创建索引
- 利用Lucene.net搜索引擎进行多条件搜索的做法