目录

  • 关于本文档
  • 关于 Demo
  • Setting youy CLASSPATH
  • Indexing Files
  • About the code
  • Location of the source
  • IndexFiles
  • Searching Files

关于本文档

这篇文档可以当做使用和运行 Lucene 代码的入门指南。它让你粗略的了解一些基础的安装和配置。

关于 Demo

Lucene command-line 代码由,一个展示 Lucene 各项功能的 application,和 如何将 Lucene 加入到你的应用中,这两部分组成。

Setting youy CLASSPATH

首先,你需要下载最近 Lucene 的发行版,然后将其解压到一个工作目录中。
你需要四个 JARs:Lucene JAR,queryparser JAR, common analysis JAR,和 Lucene demo JAR。当你解压文档后,你应该看到 Lucene JAR 在 core 的文件夹里——它的命名可能比较类似 lucene-core-{version}.jar。你同样也能看见叫做 lucene-queryparser-{version}.jar,lucene-analyzers-{version}.jar 和 lucene-demo-{version}.jar 各自在 queryparser,analysis/commom/ 和 demo/ 文件夹下。

Indexing Files

一旦你走到这一步,你可能就会迫不及待地想继续走下去。让我们来构建一个索引!假如你的 ClASSPATH 设置的正确,那就输入:

java org.apache.lucene.demo.IndexFiles -docs {path-to-lucene}

这将会生成一个叫“index” 的子文件夹,包含所有 Lucene 源码的一个索引。
查询索引输入:

java org.apache.lucene.demo.SearchFiles

你会被提示输入一个 query。随便输入一句话或编一个单词(例如:“supercalifragilisticexpialidocious”)。你会看到没有匹配 lucene 源码的结果。现在驶入输入单词“string”。将会返回一连串的文档。结果会以每页10条的方式返回,并且询问你是否想要更多结果。

About the code

在这一章,我们走马观花的通过 command-line Lucene demo 学习了源码:到哪里去找它们,它们的部件和功能。本节旨在让Java开发人员了解如何在他们的应用程序中使用Lucene。

Location of the source

这里讨论的文件直接链接到本文档中:

  • IndexFiles.java:代码创建 Lucene 索引。
  • SearchFiles.java:代码查询 Lucene 索引。

IndexFiles

正如我们前面所讨论的,IndexFiles 类创建了一个 Luncene Index。让我们看看它是如何做到的。
它的 main() 函数解析了 command-line 参数,然后准备实例化 IndexWriter,开启一个 Directory,并且实例化 StandarAnalyzer 和 IndexWriterConfig。

command-line 参数 -index 的值代表所有需要被存储索引信息的文件系统文件夹的名字。如果 IndexFiles 通过相对路径,或者,如果 command-line 参数 -index 没有被提供,使用默认的相对索引路径 “index”,索引路径将被创建为当前工作目录的子目录(如果它不存在的情况下)。在一些平台,索引路径将会被创建在不同的文件夹(例如 user’s home 文件夹)。
command-line 参数 -docs 的值是索引文件的位置。

-update 参数值告诉 IndexFiles 不要删除已存在的索引。如果 -update 没有提供,IndexFiles 会在索引任何文档之前先把之前的擦除干净。

Lucene 的 Directory 是 IndexWriter 用来存储索引信息的。我们除了 FSDirectory 这个实现外,还有几个其他的 Directory 子类,可以写入到 RAM,数据库等等。

Lucene 的 Analyzers 处理将文本分解为索引标记(又称 terms)的管道,并可选地对这些标记执行其他操作,例如,转换成小写,synonym insertion,过滤出不想要的标记等等。我们用到的 Analyzer 是 StandardAnalyzer,使用 Unicode Standard Annex #29 中定义的 Unicode Text Segmentation 算法的 Word Breake 规则去创建标记;把标记转换成小写;然后过滤掉“停用词”。“停用词”是一些文章中共有的词汇(a,an,the等)和一些其他没有什么搜索意义的标记。可能每种语言有不同的规则,你应该为每种语言使用适合的 analyzer。Lucene 当前为一些不同的语言提供 Analyzers(具体查看 lucene/analysis/common/src/java/org/apache/lucene/analysis 下的 javadocs)。

IndexWriterConfig 示例掌控了 IndexWriter 的所有配置项。例如,我们在这里基于 command-line 的 参数 -update 的值,设置 OpenMode。

再往下看,在 IndexWriter 被实例化之后,你可能会看到 indexDocs() 代码。这个循环函数爬取目录并且创建 Document 对象。Document 只是一个数据对象,用来表示文件的文本内容以及它的创建时间和位置。这些实例被添加到 IndexWriter 中。如果 command-line 的 -update 参数被提供,IndexWriterConfig OpenMode 将会被设置成 OpenMode.CREATE_OR_APPEND,并且,不再是往 index 里增加 document,IndexWriter 将会通过找到 index 中相同标识符(在我们的案例中,文件路径作为标识符)的 already-indexed 的 document 做更新;如果存在就删除它;然后将新的 document 添加到 index 中。

Searching Files

SearchFiles 类相当简单。它主要和 IndexSearcher,StandarAnalyzer,和一个 QueryParser(同时也用在 IndexFiles 中)。使用解析器构造查询解析器,该解析器用于以解释文档的相同方式解释查询文本:找到单词边界,大小写转换,和移除像“a”、“an” 和 “the” 这样的不使用的词汇。Query 对象包含传递给搜索器的 QueryParser 的结果。注意,也可以在不使用查询解析器的情况下通过编程构造富 Query 对象。查询解析器只是将 Lucene 查询语法解码为相应的 Query 对象。

SearchFiles 使用 IndexSearcher.search(query, n) 方法,返回最多 n 条命中的 TopDocs。结果被打印在 pages 中,以 score 排序(也就是 相关度)。

Apache Lucene - Building and Installing the Basic Demo相关推荐

  1. java lucene demo,lucene自带的两个demo的运行测试方法

    最近准备做个自己的blog,考虑到对文文章内容的搜索,于是决定通过lucene对文章进行全文搜索.以下是我的学习笔记. 首先学习了中文java上的为自己的系统搞个全文搜索.车东的基于Java的全文索引 ...

  2. 《深入理解Elasticsearch(原书第2版)》——第2章 查询DSL进阶 2.1 Apache Lucene默认评分公式解释...

    本节书摘来自华章计算机<深入理解Elasticsearch(原书第2版)>一书中的第2章,第2.1节,作者 [美]拉斐尔·酷奇(Rafal Ku)马雷克·罗戈任斯基(Marek Rogoz ...

  3. 【手把手教你全文检索】Apache Lucene初探

    讲解之前,先来分享一些资料 首先呢,学习任何一门新的亦或是旧的开源技术,百度其中一二是最简单的办法,先了解其中的大概,思想等等.这里就贡献一个讲解很到位的ppt.已经被我转成了PDF,便于搜藏. 其次 ...

  4. A SPI class of type org.apache.lucene.codecs.PostingsFormat with name 'Lucene40' does not exist.

    简单的建立索引和查询索引并不难,关键在于他的二次开发,让他适合你自己的需求 既然要二次开发就必须查看源码 首先看看索引过程中的核心类吧: IndexWriter 这个是核心组件, 建立和打开索引,以及 ...

  5. 关于org.apache.lucene.queryParser.ParseException: Encountered 解决方法

    现象: org.apache.lucene.queryParser.ParseException: Encountered "<EOF>" at line 1, col ...

  6. java hibernate错误org/dom4j/DocumentException、org/jboss/logging/BasicLogger、org/apache/lucene/index...

    很久没有看java的,今天运行一个以前的hibernate程序: 先报错,org/dom4j/DocumentException: 根据资料,原因是没有导入 dom4j-1.6.1.jar:下载此ja ...

  7. java实例拷贝,Apache Commons包 BeanUtils 对象拷贝实例demo

    Apache Commons包 BeanUtils 对象拷贝实例demo 发布时间:2019-05-08作者:laosun阅读(1846) Apache Commons包 BeanUtils 对象拷贝 ...

  8. 使用 Apache Lucene 搜索文本——轻松为应用程序构建搜索和索引功能

    简介: 本文将探讨 Apache Lucene -- 性能卓越.功能全面的文本搜索引擎库.我们将学习 Lucene 架构及其核心 API.学习如何使用 Lucene 进行跨平台全文本搜索.建立索引.显 ...

  9. Apache Lucene与Lucene.Net——全文检索服务器

    lucene学习教程 1.1 什么是lucene Lucene是一个全文搜索框架,而不是应用产品.因此它并不像www.baidu.com 或者google Desktop那么拿来就能用,它只是提供了一 ...

最新文章

  1. 5G商用元年!最新鲜热辣的使用指南看这里
  2. http://www.cnblogs.com/Javame/p/3632473.html
  3. 吴恩达 coursera ML 第九课总结+作业答案
  4. ArcGIS鼠标滚轮方向之ArcMap篇
  5. POJ - 2689 Prime Distance(素数区间筛模板)
  6. webpack之externals操作三部曲--正确的姿势
  7. new失败跟踪函数_WinDbg预览时间线:调试器中的时间线可以允许用户记录跟踪
  8. TCGA(三)--采用GDC API进行数据查询和获取
  9. python __setattr__和__getattr__
  10. 拓端tecdat:R语言深度学习卷积神经网络 (CNN)对 CIFAR 图像进行分类:训练与结果评估可视化
  11. 2010年VMware中国获奖总结(1/2)
  12. 美化我们的windows xp
  13. 什么专业可以留学计算机动画,美国留学计算机动画专业怎么样?
  14. 华师大副校长任友群:互联网+校园新挑战
  15. 三层HashMap的嵌套
  16. 矩形波如何傅立叶展开_SolidWorks三维钣金展开放样实例教程
  17. linux篇-安装cmatrix(黑客帝国矩阵效果)
  18. 学红外雨量IFR202型传感器应用于智慧灌溉自动门窗地质灾害
  19. JWT实战 Spring Security Oauth2整合JWT 整合SSO单点登录
  20. 数据分析——matplotlib

热门文章

  1. 搭建confluence服务器(详细操作+踩坑说明)
  2. POJ 3264 Balanced Lineup (RMQ)
  3. 华为云数字资产链,构建新型数字经济价值
  4. 什么是语言?什么是自然语言?
  5. 网站移至俄语服务器日期错误_se7en3_新浪博客
  6. 自我鉴定300字大专计算机应用,大专毕业自我鉴定300字计算机专业
  7. 当代大学生应该如何学习计算机科学
  8. Qt 如何将QPushButton弹起
  9. excel打印宏_使用Excel宏打印发票
  10. VTK:数据动画用法实战