2.lucene入门案例(lucene6.0)
来源:互联网 发布:剑网三iu捏脸数据 编辑:程序博客网 时间:2024/06/05 11:37
项目源码路径:https://github.com/tangxing1993/lucene/tree/master
项目使用Maven构建,采用lucene6.0,lucene前后版本有差异,pom文件如下:
<dependencies> <!-- lucene的核心jar包 --> <dependency> <groupId>org.apache.lucene</groupId> <artifactId>lucene-core</artifactId> <version>6.0.0</version> </dependency> <!-- lucene的查询解析包 --> <dependency> <groupId>org.apache.lucene</groupId> <artifactId>lucene-queryparser</artifactId> <version>6.0.0</version> </dependency> <!-- lucene的各种分词器包 --> <dependency> <groupId>org.apache.lucene</groupId> <artifactId>lucene-analyzers-common</artifactId> <version>6.0.0</version> </dependency> <!-- lucene的查询包 --> <dependency> <groupId>org.apache.lucene</groupId> <artifactId>lucene-queries</artifactId> <version>6.0.0</version> </dependency> <!-- lucene的显示高亮包 --> <dependency> <groupId>org.apache.lucene</groupId> <artifactId>lucene-highlighter</artifactId> <version>6.0.0</version> </dependency> </dependencies> <!-- 项目使用jdk1.8 --> <build> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build>
创建入门程序HelloLucene.java
/*** 索引的核心API* IndexWriter 索引的写对象* IndexWriterConfig 索引写对象的配置对象(可以设置写操作是create还是append)* Analyzer 通用的分词器接口* Filed 域对象* Document 文档对象* IndexReader 索引的读对象* IndexSearcher 搜索索引对象*/public class HelloLucene { /** * 被索引文件的存储路径 */ private String index_store = "D:\\develope\\store\\hello"; /** * 索引的存储目录 */ private Directory directory; /** * 创建模拟数据 实际被索引的数据可以为内存中的数据,文件,数据库数据等等 */ private String[] names = {"java","lucene"}; private String[] contents = {"hello java !","hello lucene !"}; /** * 创建索引 */ public void createIndex(){ IndexWriter writer = null; Document document = null; try{ Long start = System.currentTimeMillis()/1000; System.out.println("开始创建索引..."); File file = new File(index_store); if(!file.exists()) file.mkdirs(); //创建目录对象 directory = FSDirectory.open(file.toPath()); //创建标准分词器 Analyzer analyzer = new StandardAnalyzer(); //创建写索引对象的配置对象 IndexWriterConfig config = new IndexWriterConfig(analyzer); //创建索引的写入对象 writer = new IndexWriter(directory, config); //清除所有的索引内容 writer.deleteAll(); //向文档对象中创建域对象,然后由写索引对象创建索引 for(int i=0;i<names.length;i++){ document = new Document(); document.add(new StringField("name", names[i], Store.YES)); document.add(new TextField("content", contents[i], Store.YES)); writer.addDocument(document); } Long end = System.currentTimeMillis()/1000; System.out.println("索引创建成功!耗时"+(end-start)+"s"); }catch(Exception e){ e.printStackTrace(); }finally{ if(null!=writer){ try { writer.close(); //关闭资源 } catch (IOException e) { e.printStackTrace(); } } } } /** * 搜索操作 */ public void doSearch(){ IndexReader reader =null; try{ directory = FSDirectory.open(new File(index_store).toPath()); //创建索引文件读对象 reader = DirectoryReader.open(directory); //创建索引搜索对象 IndexSearcher searcher = new IndexSearcher(reader); //创建标准分词器 Analyzer analyzer = new StandardAnalyzer(); //创建查询解析器 QueryParser parser = new QueryParser("content", analyzer); //搜索内容中包含java的文件 Query query = parser.parse("java"); //搜索内容 TopDocs search = searcher.search(query, 10); //10表示要现实的调试 //获取搜索到的结果 ScoreDoc[] scoreDocs = search.scoreDocs; for(ScoreDoc sd : scoreDocs){ //获取搜索到的文档 Document doc = searcher.doc(sd.doc); System.out.println("文档id:"+sd.doc+" | name:"+doc.get("name")+" | content:"+doc.get("content")); } }catch(Exception e){ e.printStackTrace(); }finally{ if(null!=reader){ try { reader.close(); } catch (IOException e) { e.printStackTrace(); } } } } public static void main(String[] args) { //创建索引 HelloLucene lucene = new HelloLucene(); lucene.createIndex(); lucene.doSearch(); }}
最终执行结果:
luke工具的使用:
索引创建完之后可以使用索引查看工具进行查看和维护
Luke(https://code.google.com/archive/p/luke/)这个好像只能下载到支持lucene4.0版本以下的,打开页面
,
本片用到的工具在http://www.oschina.net/news/72599/luke-6-0-0 里面下载。
阅读全文
0 0
- 2.lucene入门案例(lucene6.0)
- 4. Lucene各种查询操作(Lucene6.0.0)
- Lucene6.1学习案例
- Lucene——入门案例
- Lucene创建索引入门案例
- Lucene创建索引入门案例
- Lucene之入门案例-yellowcong
- lucene6.4.2高亮测试源码 一定要导入这个包lucene-memory-6.4.2.jar
- Lucene6.0基础教学
- Lucene6.0分析(一)——数据分析接口
- LUCENE入门(一)
- Lucene入门(一)
- JAVA_WEB项目之Lucene检索框架入门案例
- 5.Analyzer解析(Lucene6.0.0)
- Lucene6入门教程(二)索引的创建
- Lucene6入门教程(三)搜索和查询
- Lucene6入门教程(四)索引文件格式
- Lucene6入门教程(五)版本改变
- CF Round #413( Div.1/2) Fountains(线状数组查找)
- 操作系统(Operating System)2
- js中的Date对象在IOS系统中无法正常工作
- dfs求连通性,bfs求迷宫最短路
- spring使用注解注入bean理解
- 2.lucene入门案例(lucene6.0)
- 程序小白--ArrayList浅谈
- 决赛ppt讲解
- 第五次上机作业
- 塔式太阳能热发电技术在我国发展现状与前景分析
- Codeforces Round #374 (Div. 2) D. Maxim and Array —— 贪心
- H
- Android bug记录
- Create reverse table