前言:lucene并不是像solr或elastic那样提供现成的、直接部署可用的系统,而是一套jar包,提供了一些常见语言分词、构建索引和创建搜索器等等功能的API,我们常用到的也就是分词器、索引目录管理、索引器以及几种搜索器。

这里我们会从lucene结构到实现逐一进行分析讲解

注意:基于lucene5.5.3,(只支持5.x版本,不支持5.x以下和6.x以上的lucene版本)

jar包集合下载地址:http://download.csdn.net/detail/eguid_1/9677589

一、lucene的基本结构

lucene 的主要功能由索引器索引搜索器构成,所有的外围功能都为构建索引和搜索两个功能提供服务

1、索引器构成

搜索器由分词器索引目录、索引文档构成

lucene全文搜索之二:创建索引器(创建IKAnalyzer分词器和索引目录)基于lucene5.5.2

(1)分词器构成

内置分词器:Lucene-analyzers-common-5.5.2.jar提供了多国语言的分词器

常用中文分词器:IKAnalyzer和庖丁

使用IK Analyzer中文分词器(修改IK Analyzer源码使其支持lucene5.5.x)

(2)索引目录构成

索引目录分为:文件目录内存虚拟目录

补充:在大量实际应用中百万级别的数据量下文件目录和内存虚拟目录索引在性能上并没有太大差异

(3)索引文档

索引文档由多个索引字段构成,用于保存要索引的字段;

索引字段由字段名和字段内容以及权重值组成。

lucene全文搜索之三:生成索引字段,创建索引文档(给索引字段加权)基于lucene5.5.2

(补充:文章或者其他内容用于构建索引字段,并赋予权重值,再将构建好的索引字段保存到索引文档,就可以用来搜索了,当然我们也可以将索引文档保存到索引目录,这样我们就可以使用搜索器来搜索这个索引目录中的索引文档)

2、索引搜索器构成

索引搜索器由索引目录创建,所以实际上可以把索引保存到不同的索引目录,在搜索时通过不同的索引目录进行分类搜索;
索引搜索器需要搜索器进行搜索结果(可以根据排序或者根据匹配值或权重值对搜索结果进行调整);
部分搜索器需要依赖分词器进行分词。

搜索器分为六种

(1)单词搜索

搜索单个关键字

(2)前缀搜索

按照对应的前缀进行搜索

(3)范围搜索

搜索指定一个范围

(4)语句模糊搜索

使用内置分词器或中文分词器对查询语句进行分词并根据分词结果模糊搜索

(5)条件模糊搜索

在语句模糊查询基础上加上OR或者AND进行条件搜索

补充:只支持OR、AND两种条件搜索

(6)组合搜索

可以组合上面几种搜索器进行混合搜索

下一章:lucene全文搜索之二:创建索引器(创建IKAnalyzer分词器和索引目录)基于lucene5.5.2

lucene全文搜索之一:lucene的主要功能和基本结构(基于lucene5.5.3)的更多相关文章

  1. lucene全文搜索之四:创建索引搜索器、6种文档搜索器实现以及搜索结果分析(结合IKAnalyzer分词器的搜索器)基于lucene5.5.3

    前言: 前面几章已经很详细的讲解了如何创建索引器对索引进行增删查(没有更新操作).如何管理索引目录以及如何使用分词器,上一章讲解了如何生成索引字段和创建索引文档,并把创建的索引文档保存到索引目录,到这 ...

  2. lucene全文搜索之三:生成索引字段,创建索引文档(给索引字段加权)基于lucene5.5.3

    前言:上一章中我们已经实现了索引器的创建,但是我们没有索引文档,本章将会讲解如何生成字段.创建索引文档,给字段加权以及保存文档到索引器目录 luncene5.5.3集合jar包下载地址:http:// ...

  3. lucene全文搜索之二:创建索引器(创建IKAnalyzer分词器和索引目录管理)基于lucene5.5.3

    前言: lucene全文搜索之一中讲解了lucene开发搜索服务的基本结构,本章将会讲解如何创建索引器.管理索引目录和中文分词器的使用. 包括标准分词器,IKAnalyzer分词器以及两种索引目录的创 ...

  4. OSCHina技术导向:Java全文搜索框架Lucene

    Lucene 是apache软件基金会一个开放源代码的全文检索引擎工具包,是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎.Lucene的目的是为软件开发人员提供一个简单易用 ...

  5. 全文搜索技术—Lucene

    1.   内容安排 实现一个文件的搜索功能,通过关键字搜索文件,凡是文件名或文件内容包括关键字的文件都需要找出来.还可以根据中文词语进程查询,并且支持多种条件查询. 本案例中的原始内容就是磁盘上的文件 ...

  6. Lucene全文搜索之分词器:使用IK Analyzer中文分词器(修改IK Analyzer源码使其支持lucene5.5.x)

    注意:基于lucene5.5.x版本 一.简单介绍下IK Analyzer IK Analyzer是linliangyi2007的作品,再此表示感谢,他的博客地址:http://linliangyi2 ...

  7. Lucene全文搜索 分组,精确查找,模糊查找

    http://zm603380946.iteye.com/blog/1827318 完全个人理解,如有更好的方法,欢迎一起讨论 LuceneUtils.java package com.zbiti.l ...

  8. Lucene 全文搜索解析

    一.创建查询对象的方式 对要搜索的信息创建 Query 查询对象,Lucene 会根据 Query 查询对象生成最终的查询语法.类似关系数据库 Sql 语法一样,Lucene 也有自己的查询语法,比如 ...

  9. MySQL全文搜索

    http://www.yiibai.com/mysql/full-text-search.html 在本节中,您将学习如何使用MySQL全文搜索功能. MySQL全文搜索提供了一种实现各种高级搜索技术 ...

随机推荐

  1. PL/SQL 自动补全[转]

    1.新建 shortcuts.txt 内容如下: s = SELECT t.* FROM t w = WHERE b = BETWEEN AND l = LIKE '%%' o = ORDER BY ...

  2. ElasticSearch-5.3.1集群环境搭建,安装ElasticSearch-head插件,安装错误解决

    说起来甚是惭愧,博主在写这篇文章的时候,还没有系统性的学习一下ES,只知道可以拿来做全文检索,功能很牛逼,但是接到了任务不想做也不行, leader让我搭建一下分布式的ES集群环境,用来支持企业信用数 ...

  3. 利用LinkedList生成一副扑克牌

    import java.util.LinkedList; import java.util.Random; //自定义一个Poker类,用于存储扑克的信息(花色.数字) class Poker{ St ...

  4. JavaScript算法 ,Python算法,Go算法,java算法,系列之【归并排序】篇

    常见的内部排序算法有:插入排序.希尔排序.选择排序.冒泡排序.归并排序.快速排序.堆排序.基数排序等.用一张图概括: 归并排序(英语:Merge sort,或mergesort),是创建在归并操作上的 ...

  5. list和map集合

    List特点:元素有放入顺序,元素可重复Set特点:元素无放入顺序,元素不可重复(注意:元素虽然无放入顺序,但是元素在set中的位置是有该元素的HashCode决定的,其位置其实是固定的)Map特点: ...

  6. 转:Java compiler level does not match the version of the installed Java project facet

    a.问题描述:eclipse加载新的项目后报一个错误,具体描述如下: Description Resource PathLocation Type Java compiler level does n ...

  7. hosts文件原理

    hosts文件是一个用于储存计算机网络中各节点信息的计算机文件.这个文件负责将主机名映射到相应的IP地址.hosts文件通常用于补充或取代网络中DNS的功能.和DNS不同的是,计算机的用户可以直接对h ...

  8. 基于OWIN+DotNetOpenOAuth实现OAuth2.0

    这几天时间一直在研究怎么实现自己的OAuth2服务器,对于太了解OAuth原理以及想自己从零开始实现的,我建议可以参考<Apress.Pro ASP.NET Web API Security&g ...

  9. 多线程编程-- part 3 多线程同步->synchronized关键字

    多线程同时访问一个资源,可以会产生不可预料的结果,所以为这个资源加锁,访问资源的第一个线程为其加锁后,其他线程便不能在使用那个资源,直到锁被解除. 举个例子: 存款1000元,能取出800的时候我就取 ...

  10. 卸载XCode插件的方法

    1.Finder--前往---前往文件夹--输入~/Library/Developer/Xcode/Plug-ins 2.删除要卸载的插件即可.