`

Apache Lucene 5.x版本 示例

 
阅读更多
http://blog.csdn.net/isea533/article/details/48791309

由于目前网上关于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的抽象AnalyzerAPI,主要就是分词器。提供了一些默认的实现,包含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,建议下载官方提供的下载,里面包含完整的文档内容。
分享到:
评论

相关推荐

    lucene-5.3.0+solr-5.3.0 jar包和文档示例

    Lucene是一套用于全文检索和搜寻的开源程式库,由Apache软件基金会支持和提供。Lucene提供了一个简单却强大的应用程式接口,能够做全文索引和搜寻。在Java开发环境里Lucene是一个成熟的免费开源工具。就其本身而言,...

    lucene-starter:该存储库包含与Apache Lucene一起使用的示例

    lucene-starter 该存储库包含与Apache Lucene一起使用的示例

    luceneserver:在Apache Lucene之上的高性能“瘦包装” HTTP REST服务器

    Lucene服务器该项目在 6.x版快照源之上提供了一个简单的示例HTTP服务器,通过简单的REST / JSON HTTP API有效地公开了Lucene的许多核心和模块功能。 请注意,这段代码都是非常新的,可能会有令人兴奋的错误! 但这也...

    ApacheConNA2015:ApacheCon NA 2015(Apache CXF、Tika 和 Lucene)的演示和示例项目

    ApacheCon NA 2015 的演示文稿和示例项目(Apache CXF、Tika 和 Lucene:搜索 JAX-RS 方式的力量)

    基于lucene的搜索引擎总结

    Lucene索引代码示例: Directory dir = FSDirectory.getDirectory(indexDir); Analyzer anlyzer = new SimpleAnalyzer(); IndexWriter writer = new IndexWriter(dir, analyzer, true); Document doc = new Document...

    java开源包5

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包4

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包7

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包101

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包10

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包1

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    lucene-solr-operator:Apache Solr的Kubernetes运算符

    [邮件列表]] Solr操作员在Kubernetes中管理Apache Solr云。 它基于框架构建。 该项目目前处于beta( v1beta1 ),虽然我们预计不会以向后不兼容的方式更改API,但尚无此保证。 如果您在使用Solr运算符时遇到问题,请...

    ApacheSpark的Lambda架构示例应用

    ApacheHadoop由ApacheSoftwareFoundation公司于2005年秋天作为Lucene的子项目Nutch的一部分正式引入。它受到最先由GoogleLab开发的Map/Reduce和GoogleFileSystem&#40;GFS&#41;的启发。它成为一个独立项目的时间已有...

    java开源包11

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包2

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包3

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包6

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包8

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包9

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    Java资源包01

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

Global site tag (gtag.js) - Google Analytics