博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(转) lucene+paoding亲密接触
阅读量:7213 次
发布时间:2019-06-29

本文共 1539 字,大约阅读时间需要 5 分钟。

lucene是什么?lucene是一个开源的,广泛应用的,对数据进行索引、查询的一个框架,更详细的介绍请查看.

 

 

下面简单的描述一下索引和查询过程。

1. 做索引简单过程:

//获取索引存储路径

  String strindexDir = “”;

  File indexDir = new File(strindexDir);

 

 

// 分词器

  Analyzer analyzer = new PaodingAnalyzer(); // 中文分词 庖丁解牛

//获取写索引对象,准备开始做索引,索引对象相当于数据库中的表

   indexWriter = new IndexWriter(indexDir, analyzer, true);

//构造Document对象,Document相当于数据库中 的一条记录

Document doc = new Document();

 

// 给记录中的字段赋值

    doc.add(new Field(“name”, "value", Field.Store.NO, Field.Index.ANALYZED));

    doc.add(new Field(“name”, "value", Field.Store.NO, Field.Index.ANALYZED));

 

//表记录加入表中

    indexWriter.addDocument(doc);
// 做完索引之后,对索引进行优化
   indexWriter.optimize();

 

//关闭资源

   indexWriter.close();
 

2.查询过程

 

//存放查询结果

  List<HashMap<String, String>> rs = new ArrayList<HashMap<String, String>>();

 

//获取分析器,做索引的时候需要分析,查询的时候也需要分析

  Analyzer analyzer = new PaodingAnalyzer();

 

//构造查询对象,queryField是查询那个Field,相当于数据记录的哪个字段,q是查询关键字

  query = new QueryParser(queryField, analyzer).parse(q);

//下面这句是可以看到对查询关键字的分析

   System.out.println("query key analyze result: " + query.toString());
 

//获取索引对象,进行查询

   IndexReader reader = IndexReader.open(indexDir);
   Searcher searcher = new IndexSearcher(reader);
   Hits hits = searcher.search(query);
   searcher.close();
   

//从查询结果中获取信息

   Document doc = null;
    
    HashMap<String, String> item = new HashMap<String, String>();

    item.put("name", "value");

    item.put("name", "value");

    rs.add(item);

//释放资源

   reader.close();

 做索引,查询就被这么短短几行搞定, 如此看来,lucene好简单,甚强大。其实不然,要游刃有余,需深入磨练。

附上俺的。

 

原文地址:http://blog.csdn.net/hong201/article/details/4015301

转载于:https://www.cnblogs.com/116913829/p/4391719.html

你可能感兴趣的文章
跨域?拒绝说概念(内含demo)
查看>>
vue 源码学习(二) 实例初始化和挂载过程
查看>>
scrapy软连接失效和pip软连接失效
查看>>
IOS开发之OC-Switf 混编 -(OC 引 Swift 文件)
查看>>
JAVA并发之多线程基础(2)
查看>>
服务器返回的常见的http状态码
查看>>
HASHMAP(JDK1.7)最详细原理分析(二)
查看>>
string数组怎么定义
查看>>
我的关于前端一些知识点的理解《一》
查看>>
Asynctask源码分析
查看>>
Promise基础用法
查看>>
[译] Spring 的分布式事务实现-使用和不使用XA — 第三部分
查看>>
区块链软件公司:创新的区块链技术如何改变法律行业的面貌
查看>>
一张时序图让你看懂:脏读、不可重复读
查看>>
js创建对象的几种方法
查看>>
浮点数杂想
查看>>
摧枯拉朽,说说ES6的三把火
查看>>
Java/Android基础-02
查看>>
nginx代理响应报文体不全解决思路
查看>>
前端性能优化 —— 项目瘦身
查看>>