Lucene的基础知识

lucene总结 使用文档 详细可参考。有做好的项目,不会使用的人可联系我 lucene总结 使用文档 详细可参考。有做好的项目,不会使用的人可联系我...lucene总结 使用文档 详细可参考。有做好的项目,不会使用的人可联系我 立即下载

来自:http://www.cnblogs.com/alic/archive/2008/09/04/1284292.html

Lucene是什么?

Lucene是Apache组织的一个用JAVA实现全文搜索引擎的开源项目。后来有人将Lucene移植到。Net语言。

Lucene是一个信息检索的函数库(Library),利用它你可以为你的应用加上索引和搜索的功能。

Lucene的使用者不需要深入了解有关全文检索的知识,仅仅学会使用库中的一个类,你就为你的应用实现全文检索的功能。

不过千万别以为Lucene是一个象google那样的搜索引擎,Lucene甚至不是一个应用程序,它仅仅是一个工具,一个Library。你也可以把它理解为一个将索引、搜索功能封装的很好的一套简单易用的API。利用这套API你可以做很多有关搜索的事情,而且很方便。      

 

Lucene能做什么?

Lucene可以对任何的数据做索引和搜索。 Lucene不管数据源是什么格式,只要它能被转化为文字的形式,就可以被Lucene所分析利用。也就是说不管是MS word, Html ,pdf还是其他什么形式的文件只要你可以从中抽取出文字形式的内容就可以被Lucene所用。你就可以用Lucene对它们进行索引以及搜索。

 

 

如何使用Lucene

示例介绍

1.为作为输入参数的文件夹下的所有txt类型的文件做索引,做好的索引文件放入index文件夹。

2.然后在索引的基础上对文件进行全文搜索。

1. 建立索引

IndexWriter writer = new IndexWriter("index",new StandardAnalyzer(),true);  

Document doc = new Document(); 

doc.Add(new Field(“city”, ”上海”,Field.Store.YES, Field.Index.TOKENIZED));

doc.Add(new Field(“shopname”,”东北菜”,Field.Store.YES,Field.Index.TOKENIZED));

writer.AddDocument(doc);

doc = new Document(); 

doc.Add(new Field(“city”, ”北京”,Field.Store.YES, Field.Index.TOKENIZED));

doc.Add(new Field(“shopname”,”东北菜菜馆”,Field.Store.YES,Field.Index.TOKENIZED));

writer.AddDocument(doc);

writer.SetUseCompoundFile(true);

writer.Optimize();

writer.Close();

 

2. 对索引进行搜索

IndexSearcher indexSearcher= new IndexSearcher(indexDir);

QueryParser parser = new QueryParser("shopname", new StandardAnalyzer());

Query query = parser.Parse(“东北”);

Hits hits = indexSearcher.Search(query);

Document doc;

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

{

   doc = hits.Doc(i);

   doc.Get(“shopname”).ToString()

}

 

这样就实现了简单的全文搜索了。

 

 

Lucene的包结构

Lucene源码中共包括7个子包,每个包完成特定的功能:  

Lucene包结构功能表

包名

功能

Lucene.Net.Analysis

语言分析器,主要用于的切词,可以扩展此类以支持多种语言

Lucene.Net.Document

索引存储时的文档结构管理,类似于关系型数据库的表结构

Lucene.Net.Index

索引管理,包括索引建立、删除等

Lucene.Net.QueryParser

查询分析器,实现查询关键词间的运算,如与、或、非等

Lucene.Net.Search

检索管理,根据查询条件,检索得到结果

Lucene.Net.Store

数据存储管理,主要包括一些底层的I/O操作

Lucene.Net.Util

一些公用类

 

建立索引时最重要的几个概念

Document:一个要进行索引的单元,相当于数据库的一行纪录,任何想要被索引的数据,都必须转化为Document对象存放。

Field:Document中的一个字段,相当于数据库中的Column。

IndexWriter:负责将Document写入索引文件。通常情况下,IndexWriter的构造函数包括了以下3个参数:索引存放的路径,分析器和是否重新创建索引。特别注意的一点,当IndexWriter执行完addDocument方法后,一定要记得调用自身的close方法来关闭它。只有在调用了close方法后,索引器才会将存放在内在中的所有内容写入磁盘并关闭输出流。

Analyzer:分析器,主要用于文本分词。常用的有StandardAnalyzer分析器,StopAnalyzer分析器,WhitespaceAnalyzer分析器等。

Directory:索引存放的位置。Lucene提供了两种索引存放的位置,一种是磁盘,一种是内存。一般情况将索引放在磁盘上;相应地Lucene提供了FSDirectory和RAMDirectory两个类。

Segment:段,是Lucene索引文件的最基本的一个单位。Lucene说到底就是不断加入新的Segment,然后按一定的规则算法合并不同的Segment以合成新的Segment。

 

Lucene建立索引的过程就是将待索引的对象转化为Lucene的Document对象,使用IndexWriter将其写入Lucene 自定义格式的索引文件中。待索引的对象可以来自文件、数据库等任意途径,用户自行编码遍历目录读取文件或者查询数据库表取得ResultSet,Lucene的API只负责和字符串打交道。

 

 

Field对象

从Lucene的源代码中,可以看出Field 典型构造函数如下:

Field(String name, String value, Field.Store store, Field.Index index)

其中:

Field.Index有四种属性,分别是:

Field.Index.TOKENIZED:分词索引

Field.Index.UN_TOKENIZED:不分词进行索引,如作者名,日期等,不再需要分词。

Field.Index.NO:不进行索引,存放不能被搜索的内容如文档的一些附加属性如文档类型, URL等。

Field.Index.NO_NORMS:不分词,建索引.但是Field的值不像通常那样被保存,而是只取一个byte,这样节约存储空间。

Field.Store也有三个属性,分别是:

Field.Store.YES:索引文件本来只存储索引数据, 此设计将原文内容直接也存储在索引文件中,如文档的标题。

Field.Store.NO:原文不存储在索引文件中,搜索结果命中后,再根据其他附加属性如文件的Path,数据库的主键等,重新连接打开原文,适合原文内容较大的情况。

          Field.Store.COMPRESS 压缩存储。


lucene5:这是我在学习lucene5时自己写的一个关于lucene5的示例程序,现在分享给所有喜欢Lucene的人 lucene5 这是我在学习lucene5时自己写的一个关于lucene5的示例程序,现在分享给所有喜欢Lucene的人。 立即下载

相关推荐

【医学影像】超声(UltraSound)影像的增强与目标检测

文章目录1 综述1.1 超声发展简史1.2 超声类型2 超声影像的去噪与增强2.1 各向异性扩散去噪模型2.2 色彩恢复的视网膜增强算法SSR和MSR2.3 MSRCR增强算法(基于MSR算法改进版)2.4 参考文献3 超声影像的目标识别3.1 基于跨模态数据迁移进行DL训练3.2 参考文献 1 综述 因工作需要,最近调研了超声(UltraSound)影像的相关知识,包含超声类型、超声影像的去噪和增强,目标检测等,并对相关资料文献进行梳理整合。 本人另外一篇博文主要讲了UltraSound 影像与CT/MR

muyijames的博客 1万+

不选择使用Lucene的6大原因?

Lucene是开放源代码的全文搜索引擎工具包,凭借着其强劲的搜索功能和简单易用的实现,在国内已经很普及,甚至一度出现了言搜索必称Lucene的盛景。上个月Lucene的开发团队发布了 Java Lucene 2.3.1 ,相信很多朋友们都用上了。在国内对Lucene的介绍可以分为3块儿: 第一类是:以车东 的Lucene:基于Java的全文检索引擎简介 为代表的基础入门介绍; 第二类是L

Jason的专栏 5228

PCIe 6.0实战指南:从链路训练到信号完整性的避坑手册

本文是一份针对PCIe 6.0硬件工程师的实战避坑指南。文章深入解析了从NRZ到PAM4调制带来的信号完整性挑战,详细拆解了链路训练(LTSSM)的复杂过程与调试方法,并提供了从信道仿真到实验室实测(如使用Keysight示波器进行眼图与误码率分析)的完整信号完整性闭环验证策略,帮助工程师解决高速率下的链路不稳定与降速问题。

weixin_29306875的博客 343

【ODX介绍】-5-用于Flash刷写的ODX-F文件概述

用于Flash刷写的ODX-F文件概述

「汽车电子助手」的博客 2531

互联网的发展简史—web

互联网是我现在生活所离不开的一个东西,但是你知道互联网的前世今生吗?本文将讲解互联网的发展史,以及很火的元宇宙概念。

yj11290301的博客 3564

看了这篇文!你就知道是选 elasticsearch 还是 solr

什么是全文搜索引擎 本词条由“科普中国”科学百科词条编写与应用工作项目 审核 。 全文搜索引擎就是通过从互联网上提取的各个网站的信息(以网页文字为主)而建立的数据库中,检索与用户查询条件匹配的相关记录,然后按一定的排列顺序将结果返回给用户。 全文检索技术,尤其是中文全文检索技术的研究始于1987年左右,已经有一些商品化的软件。Internet的普及使得全文检索技术日益成熟起来,其应用已突破...

荡漾 1505

AutoSAR系列讲解(深入篇)14.7-Mcal Adc配置(上)

详细讲解了ADC的各个配置项的作用

雪云飞星的博客 1万+

Lucene介绍与使用

https://blog.youkuaiyun.com/weixin_42633131/article/details/82873731/ 目录 1、了解搜索技术 1.1 什么是搜索 1.2 普通的数据库搜索 1.3 新的业务需求 1.4 普通的数据库搜索的缺陷 2、 搜索技术 2.1 搜索引擎的种类 2.2 倒排索引 4 Lucene概述 4.1 什么是Lucene 4.2 什么是全文检索? 4.3 Lucene下载及版本问题 4.4 Lucene、Solr、Elasticsearch关系 5 Lucene的基本使

qq_39128254的博客 382

【DRAM存储器五十四】LPDDR5介绍--PHY简介和LPDDR5训练流程

简述LPDDR5 PHY的基本功能和训练流程简介

highman110的博客 910

基于MATLAB的鲁棒主成分分析(Robust PCA)图像去噪

鲁棒主成分分析(Robust PCA)是一种有效的图像去噪方法,它能够在保持图像细节的同时去除噪声。本文将介绍如何使用MATLAB实现基于鲁棒PCA的图像去噪,并提供相应的源代码。它假设噪声是随机的、高斯分布的,并将图像分解为一个低秩矩阵和一个稀疏矩阵的和。低秩矩阵表示图像的结构和纹理信息,稀疏矩阵表示图像中的噪声和细节信息。接下来,我们将图像矩阵减去均值,得到规范化的图像矩阵。然后,我们将灰度图像转换为矩阵形式,并计算图像的均值。通过分离出低秩矩阵和稀疏矩阵,我们就得到了去噪后的图像和残差图像。

DevRevolt的博客 1125

Java轻量级全文检索引擎Lucene使用及优化

Lucene是一个开源的全文检索引擎工具包由Doug Cutting编写。它被设计用于实现全文搜索功能,即读入一堆文本文件并将其转换为易于搜索的数据结构。Lucene提供了一组简单而强大的API,使得索引和搜索过程变得非常方便。

BXA 5966

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Lucene基础知识

一、Lucene基础知识1.1 数据分类 数据总体分为两种:结构化数据和非结构化数据。 结构化数据:指具有固定格式或有限长度的数据,如数据库、元数据等。 非结构化数据:指格式不固定或者长度不固定的数据例如文档。 1.2 非结构化数据查询的方法1、顺序扫描法:所谓顺序扫描,比如要找内容包含某一个字符串的文件,就是一个文档一个文档的看,对于每一个文档,从头看到尾,如果此文档包含此字

无德皇叔的博客 1357

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

lucene基础知识

注:在MyEclipse中可以通过Ctrl+Shift+R和通配符查询相关的资源。 1、全文检索的概念 <1>从大量的信息中快速、准确地查找出要的信息。 <2>搜索的内容是文本信息(不是多媒体)。 <3>根据文本的关键词进行搜索,而不是根据语义进行搜索。 <4>全面、快速、准确是衡量全文检索系统的关键指标。 <5>搜索时英文不区分大小写。 <6>结果列表由相关度排序。 <7>全文搜索有站内搜索和垂直搜索 2、全文搜索与数据搜

woaini886353的博客 1384

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Lucene 基础知识

第一、什么是全文检索 1.1 数据分类(结构化和非结构化数据) 结构化数据:指具有固定格式或有限长度的数据,如数据库,元数据等。 非结构化数据:指不定长或无固定格式的数据,如邮件,word文档等磁盘上的文件 1.2 结构化数据搜索 常见的结构化数据也就是数据库中的数据。数据检索通常使用SQL 1.3 非结构化数据搜索 (1)顺序扫描法:所谓顺序扫描,比如要找内容包含某一个字符串的文件,就是一个文档一个文档的看,对于每一个文档,从头看到尾,如果此文档包含此字符串,则此文档为我们要找的文件,接着看下

zhouzhiwengang的专栏 397

lucene的基础知识

设有两篇文章A和B  文章A的内容为: Tom lives in Guangzhou,I live in Guangzhou too. 文章B的内容为: He once lived in Shanghai. 1. 由于lucene是基于关键词索引和查询的,首先我们要取得这两篇文章的关键词,通常我们需要如下处理措施 a. 我们现在有的是文章内容,即一个字符串,我们先要找出字符串中的所

空谷幽兰草堂 693

Lucene入门——基础知识

Lucene简介 Lucene是一个基于Java的全文信息检索工具包,为应用程序提供索引和搜索功能。 Lucene采用的是一种称为反向索引(inverted index)的机制。反向索引就是说我们维护一个词/短语表,对于这个词/短语表再通过一个链表标示哪些文档包含了这个词、短语。这样在用户输入查询条件的时候,就能非常快的查找到搜索结果。对文档建好索引后,可以基于索引进...

bangzun0726的博客 188

基础知识与理论;ES与lucene的关联

在搜索这块,lucene是最流行的搜索库。 elasticSearch是基于lucene的分布式搜索引擎。在es没火的时候,大家一般用solr 1.Lucene只是一个库。想要使用它,你必须使用java来作为开发语言并将其直接集成到你的应用中,更糟糕的是,Lucene非常复杂,你需要深入了解检索的相关知识来理解它是如何工作的。 2.Elasticsearch也使用Java开发并使用Lucen...

yinni11的博客 2930
上一篇: c#打开关闭CD/DVD光驱代码
下一篇: 如何高效、准确、自动识别网页编码
ArvinStudy
博客等级 码龄15年 83粉丝 193原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值