Lucene基础(一)--入门

Lucene介绍

lucene的介绍,这里引用百度百科的介绍Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。Lucene是一套用于全文检索和搜寻的开源程式库,由Apache软件基金会支持和提供。Lucene提供了一个简单却强大的应用程式接口,能够做全文索引和搜寻。在Java开发环境里Lucene是一个成熟的免费开源工具。就其本身而言,Lucene是当前以及最近几年最受欢迎的免费Java信息检索程序库。人们经常提到信息检索程序库,虽然与搜索引擎有关,但不应该将信息检索程序库与搜索引擎相混淆。

了解lucene的相关知识直接进入lucene官网 http://lucene.apache.org/

在lucene的官网我们会发现还会有一个solr的开源的软件,它是基于的一个上层写的应用,lucene给我提供的是类似sdk的功能,开发人员需要更多的自己写代码,而solr相对少些代码。可想而知,如果使用lucene的话,我们可以更多的自定义自己的搜索

Lucene下载安装

进入上面的lucene的官方网站,找到下载后解压就行

根据lucene的版本的不同,需要的jdk的版本也会有差异,这个需要在官方网站上看看说明文档,本次测试使用的lucene4.9,编译的jdk为1.7

Unsupported major.minor version 51.0 xxx 
如果出现类似的异常,就是下载的lucene和编译的jdk的版本不对,更新个jdk1.7 就可以

Lucene入门实例

下面是在lucene的官方文档里的一段入门代码

public class LuceneDemo

{

  private static final Version version = Version.LUCENE_4_9;

  public static void main(String[] args) throws Exception

  {

    Analyzer analyzer = new StandardAnalyzer(version);

    // Store the index in memory:

    Directory directory = new RAMDirectory();

    // To store an index on disk, use this instead:

    //Directory directory = FSDirectory.open("/tmp/testindex");

    IndexWriterConfig config = new IndexWriterConfig(version, analyzer);

    IndexWriter iwriter = new IndexWriter(directory, config);

    Document doc = new Document();

    Document doc2 = new Document();

    String text = "This is the text to be indexed.";

    String text2 = "This is the text to be indexed22222.";

    doc.add(new Field("fieldname", text, TextField.TYPE_STORED));

    doc2.add(new Field("fieldname", text2, TextField.TYPE_STORED));

    iwriter.addDocument(doc); iwriter.addDocument(doc2); iwriter.close();

    // Now search the index:

    DirectoryReader ireader = DirectoryReader.open(directory);

    IndexSearcher isearcher = new IndexSearcher(ireader);

    // Parse a simple query that searches for "text":

    QueryParser parser = new QueryParser(version, "fieldname", analyzer);

    Query query = parser.parse("text");

    ScoreDoc[] hits = isearcher.search(query, null, 1000).scoreDocs;

    // Iterate through the results:

    for (int i = 0; i < hits.length; i++)

    {

      Document hitDoc = isearcher.doc(hits[i].doc);

      System.out.println("This is the text to be indexed="+hitDoc.get("fieldname"));

    }

    ireader.close();

    directory.close();

    }

  }

代码解析

写索引

建立索引开始建立Analyzer,创建索引保存位置创建写(IndexWriter)索引对象建立文档添加文档域添加文档关闭结束

读索引

从代码可以看到基本操作步骤:

  1. 先知名索引的位子,建立读索引的对象
  2. 创建查询器 Query(query有很多实现类,例子中用的是QueryParse的方法)
  3. 执行search方法,得到ScoreDoc ,解析文档
  4. 关闭读写器

Lucene主要元素

Lucene中有几个重要的元素

  1. IndexWriter – 用来创建写索引的对象,与之配合使用的有一个IndexWriterConfig,用来对indexwriter做配置
  2. IndexSearch – 与indexwriter对应,用来读所以
  3. Document – 被索引的内容形成一个document文档
  4. Field – 文档的域
  5. Query – 用来查询的对象
  6. Term – 构建查询
  7. ScoreDoc – 命中的结果集

比如:一篇文章,我们有title,author,createTime,category,content那么这每一个可以看做一个域,整个文章就是一个document,如果搜索内容content包含了lucene的文件,就会更具域content的所有找到有Lucene的文章。

时间: 2024-10-24 19:38:40

Lucene基础(一)--入门的相关文章

C#消息队列(MQ)零基础从入门到实战演练

一.课程介绍 如果您从工作中之听过但未有接触过消息对队列(MQ),如果你接触过一点关于MQ的知识,如果没有这么的多如果的话......,那么阿笨将通过本次<C#消息队列零基础从入门到实战演练>分享课让您对消息队列有一个实质性的了解和认识,达到实际的灵活贯通和运用.本次分享课您将学习到以下知识点: 1.微软MSMQ的基本使用技能以及MSMQ在WCF技术中的运用. 2.企业级RabbitMQ消息队列的两种消费模式(生产消费和发布订阅)的介绍和使用. 3.如何实现RabbitMQ客户端(Client

足彩基础知识入门(4)赛事数据库与预测平台基础概念介绍(一)

在足球赛事数据库以及统计分析预测平台中,有很多概念,如果不搞懂,很难进行下一步的工作.所以为了配合团队人员的学习和任务进行,特意编写这篇文章.如果有其他问题和不懂的,请留言,将根据情况进行更新. 本文原文地址:足彩基础知识入门(4)赛事数据库与预测平台基础概念介绍(一) 1.指数1/2/3.... 我在 足彩基础知识入门(3)足彩赔率的本质 一文中介绍了赔率的概念,那么指数的概念和赔率以及结果是相关的.我们举个例子: 如上图的比赛,前面是竞彩非让球的赔率:1.74-3.25-4.15,也就是说

Lucene全文检索之-Lucene基础

Lucene是全文检索引擎 一.在学习Lucene之前我们先思考下,Lucene存在的意义. 1.在之前我们的应用场景中,基于数据库的检索,我们使用like语法进行.但是基于like语法效率低下.达不到我们对应用的使用要求. 而使用Lucene对我们的数据建立索引效率高速度快,满足企业要求. 我们使用Lucene先对整个结构建立索引库,然后根据索引去查找我们需要匹配的内容,效率高速度快,方便我们快速检索信息-这也是Lucene存在的目的. 2.有些查找数据库做不了,比如我们想查找附件中内容的匹配

脱壳基础知识入门

现在加解密发展己形成2个分支了,一个就是传统的算法,另一个就是加密壳.越来越多的软件采用了密码学相关算法,现在要做出一个软件注册机己不象前几年那 么容易,这就要求解密者必须要有一定的数学功底和密码学知识,而这些在短时间内是不容易掌握的.除了密码学的应用,越来越多的软件加壳了,因此要求解密者 必须掌握一些脱壳技术,这就使得壳成了解密必须迈过的一个门槛.壳发展到今天,强度越来越高了,将许多人挡在门外,使得大家望壳兴叹.另外,论坛现在两极 分化比较严重,高手讨论的脱壳技术新手看不懂,很多人想学脱壳,但

马哥教育第二十三MySQL基础应用入门

1.MySQL基础应用入门                安装mariadb-10.0.19:                      vim /usr/local/mariadb-10.0.19-linux-x86_64/INSTALL-BINARY                                               cd /usr/local                      ln -sv mariadb-10.0.19-linux-x86_64 mysql

Linux基础知识入门

[Linux基础]Linux基础知识入门及常见命令. 前言:最近刚安装了Linux系统, 所以学了一些最基本的操作, 在这里把自己总结的笔记记录在这里. 1,V8:192.168.40.10V1:192.168.40.11Linux ip:192.168.40.128 2,Linux是一个操作系统, 与windows的区别:Linux:图形化界面简单,性能很快,在企业中当做服务器来使用.Windows:图形化界面很炫,性能相对差,大众用户.windows的服务器: windows2003,win

Lucene第一个入门学习例子

看Lucene in Action的时候,练习的一个入门例子. 在使用Lucene进行文本内容搜索前,需要先对指定的目录下的文件进行建立索引,代码如下: import java.io.File; import java.io.FileFilter; import java.io.FileReader; import java.io.IOException; import org.apache.lucene.analysis.standard.StandardAnalyzer; import or

DartWeb基础—简单入门

DartWeb基础-简单入门 DartWeb的前面是Dart,所以需要先搭建好Dart开发环境,再进行下面的工作 下载Dartium浏览器 Dartium是Chromium的一个特殊的版本,里面包含Dart VM,使用Dartium意味着你不必将代码编译为JavaScript就能调试程序,直到开发完成后再将代码编译为JavaScript测试其他浏览器 Dartium下载地址-传送门 为以后方便开发,可以建立一个快捷方式到桌面 创建并完善应用 在根目录下新建index.html文件 <!DOCTY

Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 2. 变量

大家在中学就已经学过变量的概念了.例如:我们令 x = 100,则可以推出 x*2 = 200 试试下面这段 Python 代码 1 import turtle 2 3 turtle.shape("turtle") 4 x = 100 5 turtle.forward(x) 6 turtle.left(45) 7 turtle.forward(2*x) 8 9 turtle.exitonclick() 运行上面的代码,小海龟将画出下面的图案 x = 100 声明了变量 x,并将它赋值为

cmd 与 bash 基础命令入门

身为一个程序员会用命令行来进行一些简单的操作,不是显得很装逼嘛!?嘿嘿~ ヾ(>?<) cmd 与 bash 基础命令入门 ??????简介 ??????CMD 基础命令 ????????????目录操作 ??????????????????切换目录 ??????????????????列出文件与子目录 ??????????????????创建目录 ??????????????????删除目录 ??????????????????复制目录 ??????????????????移动目录 ????