Apache Lucene 5.x版本 示例
来源:互联网 发布:淘宝网禁止出售的药品 编辑:程序博客网 时间:2024/06/06 04:55
Apache Lucene 5.x版本 示例
由于目前网上关于lucene的资料多是4.x或者更早版本的,5.x版本相比有较大的改动,为了方便学习5.x版本,本文对5.x的示例简单修改做个记录。
本文内容源自官方文档,在core/overview-summary.html
上。
本文使用的具体版本是5.3.1,针对5.x版本都适用。
简单例子
Apache Lucene 是一个高性能并且功能全面的文本搜索引擎库,这里有一个如何使用Lucene进行索引和查询的简单例子。
public static void main(String[] args) throws IOException, ParseException { Analyzer analyzer = new StandardAnalyzer(); //将索引存储到内存中 Directory directory = new RAMDirectory(); //如下想把索引存储到硬盘上,使用下面的代码代替 //Directory directory = FSDirectory.open(Paths.get("/tmp/testindex")); IndexWriterConfig config = new IndexWriterConfig(analyzer); IndexWriter iwriter = new IndexWriter(directory, config); String[] texts = new String[]{ "Mybatis分页插件 - 示例", "Mybatis 贴吧问答 第一期", "Mybatis 示例之 复杂(complex)属性(property)", "Mybatis极其(最)简(好)单(用)的一个分页插件", "Mybatis 的Log4j日志输出问题 - 以及有关日志的所有问题", "Mybatis 示例之 foreach (下)", "Mybatis 示例之 foreach (上)", "Mybatis 示例之 SelectKey", "Mybatis 示例之 Association (2)", "Mybatis 示例之 Association" }; for (String text : texts) { Document doc = new Document(); doc.add(new Field("fieldname", text, TextField.TYPE_STORED)); iwriter.addDocument(doc); } iwriter.close(); //读取索引并查询 DirectoryReader ireader = DirectoryReader.open(directory); IndexSearcher isearcher = new IndexSearcher(ireader); //解析一个简单的查询 QueryParser parser = new QueryParser("fieldname", analyzer); Query query = parser.parse("foreach"); ScoreDoc[] hits = isearcher.search(query, null, 1000).scoreDocs; //迭代输出结果 for (int i = 0; i < hits.length; i++) { Document hitDoc = isearcher.doc(hits[i].doc); System.out.println(hitDoc.get("fieldname")); } ireader.close(); directory.close();}
代码输出结果:
Mybatis 示例之 foreach (下)
Mybatis 示例之 foreach (上)
Lucene API 分成了下面几个包
org.apache.lucene.analysis
定义了从Reader
转换为TokenStream
的抽象Analyzer
API,主要就是分词器。提供了一些默认的实现,包含StopAnalyzer
和基于文法的StandardAnalyzer
。中文分词可以参考 中文分词库 IKAnalyzer。
org.apache.lucene.codecs
提供了一个抽象的编码和解码的倒排索引结构,还提供了一些不同的实现可以应用于不同的程序需求。
org.apache.lucene.document
提供了一个简单的Document
类。一个文档只是一组命名的字段,它的值可以是字符串或者Reader
的实例。
org.apache.lucene.index
提供了两个主要的类:IndexWriter
用于创建和给文档添加索引,IndexReader
用于访问索引数据。
org.apache.lucene.search
提供代表查询的数据结构(例如TermQuery
用于单独的关键字查询,PhraseQuery
用于短句,BooleanQuery
用于布尔联合查询)。 IndexSearcher
将查询转换为TopDocs
。一些QueryParsers
提供了从字符串或者xml生成查询结构的功能。
org.apache.lucene.store
定义了一个抽象类来存储持久化数据,Directory
这是一个由IndexOutput
和IndexInput
分别写和读取的指定文件的集合。提供了多个实现,包括FSDirectory
,这个实现使用文件系统目录来存储文件。还有RAMDirectory
类实现了文件驻留在内存中的数据结构。
org.apache.lucene.util
包含了一些有用的数据结构和工具类,例如FixedBitSet
和PriorityQueue
。
应用应该按下面的步骤使用Luncene
通过添加字段(
Field
)创建文档(Document
);创建
IndexWriter
,通过addDocument()
方法添加文档(Document
);调用
QueryParser.parser()
方法从字符串生成查询对象;创建
IndexSearcher
并通过search()
方法进行查询。
最后
以上内容是Luncene中最基本的内容,关于上面每个包下面都还有一份详细的文档,本文后续可能会对这些内容做一些简单的介绍,如果大家需要用到Luncene,建议下载官方提供的下载,里面包含完整的文档内容。
- Apache Lucene 5.x版本 示例
- Apache Lucene 5.x 集成中文分词库 IKAnalyzer
- Apache Lucene 5.x 集成中文分词库 IKAnalyzer
- lucene(4)——版本5.X写排序
- Apache Lucene 示例讲解全文搜索
- Apache Lucene 3.x推荐教程
- Apache Lucene 3.x推荐教程
- Apache Lucene 3.x推荐教程
- #Lucene# org.apache.lucene.util.BitUtil.pop(long x) 笔记
- lucene(3)——版本5.X写中文同义词分词器
- Apache Lucene 全文检索详解及开发示例
- Lucene 示例
- Lucene简介&Lucene示例
- Lucene简介&Lucene示例
- Lucene简介&Lucene示例
- apache lucene solr 官网历史版本下载地址
- apache lucene solr 官网历史版本下载地址
- Apache Lucene /Solr历史版本介绍及下载
- 连接池原理
- Nosql数据库——redis(二)简介和安装
- MFC打开对话框
- ActiveMQ数据持久方式
- github使用
- Apache Lucene 5.x版本 示例
- 系统学习ARM之三 --load/store指令--装载和存储指令
- 博客搬家
- Matlab中的图形句柄(转载)
- CF#322-B. Luxurious Houses-模拟水题
- 构造函数初始化列表中成员变量必须初始化的几种情况
- Java类权限(转)
- Android 图片圆角
- 孕吐厉害