首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

lucene实现搜索浅谈

现在我就以cms系统为例简单的说一下实现关键词检索功能,当我们在系统中发布一篇文章之后怎么能够让我们利用lucene可以检索出来呢i?        ...其实是这样的,当我们把一篇文章的系统保存到数据库之后同时实现把该文章的所有系统生成一系列的检索文件,这样在网站上的搜索就相当与在document中搜索关键字一样了,然后对文章的删改的同时对所生成的检索文件根据具体的索引进行相应的删改...下面说明lucene的几个关键的属性:         Document         Document 是用来描述文档的,这里的文档可以指一个 HTML 页面,一封电子邮件,或者是一个文本文件。...IndexWriter          IndexWriter 是 Lucene 用来创建索引的一个核心的类,他的作用是把一个个的 Document 对象加到索引中来。          ...Directory          这个类代表了 Lucene 的索引的存储的位置,这是一个抽象类,它目前有两个实现,第一个是 FSDirectory,它表示一个存储在文件系统中的索引的位置。

28020
您找到你想要的搜索结果了吗?
是的
没有找到

Lucene的不同搜索类型及其作用

Lucene对于查询的方式较多,可以实现TermQuery、BooleanQuery、PhraseQuery、 TermRangeQuery等一系列的基于不同类型的词组的检索。...查询方式大览 TermQuery(词条搜索) 词条搜索,根据单个单词进行查找的方式进行检索,Term表示的是一个个的单词,而在中文环境下则表示的是一个个的词语(分词后的词语)。...Query query = new TermQuery(new Term("title","PHP")) BooleanQuery(组合搜索) BooleanQuery是合并多个查询条件的Query,例如合并...TermQuery(new Term("title","PHP"))); query.add(new TermQuery(new Term("content","PHP"))); PhraseQuery(短语搜索...FuzzyQuery query = new FuzzyQUery("title","PHP"); RegexpQuery(正则表达式查询) 相信正则表达式大家都了解,Lucene实现正则表达式检索是基于词组的正则表达式检索方式

1.1K30

开源搜索技术的核心引擎 —— Lucene

ES 很了不起,需要使用搜索技术的互联网公司大半都在使用他,但是它的核心引擎却是另一个开源框架 —— Lucene。...ES 只是在 Lucene 的基础上穿了一件华丽的外衣,没有 ES 还会有其它产品来包装 Lucene,比如另一个仅次于 ES 的流行搜索系统 Solr,但是如果没有 Lucene,那 ES 可能就不会存在...Lucene 出来这么多年,市场上流行的基于 Lucene 的分布式开源搜索系统也只有 ES 和 Solr 两个。...以至于开源的分布式搜索系统也不得跟着使用 Java 语言,使用其它语言克隆一个差不多的 Lucene 代价太高了 —— Lucene 的功能实在太丰富。...所以如果读者希望更加深入地了解搜索技术,那就必须把 Lucene 吃透。在 Lucene 非常了解的基础上再来研究 ES 就可以事半功倍。

72220

Lucene的索引系统和搜索过程分析

这篇博文主要是想介绍Lucene搜索过程在源码中怎样的。决定探究源码的原因是因为我在使用Lucene的过程中遇到性能瓶颈的问题,根本不知道在搜索过程中哪里消耗的资源多,导致并发的时候服务器不堪重负。...一,搜索引擎的索引系统简介 在介绍Lucene的search之前,有必要对搜索引擎的索引系统做一个简单的了解。...二,Lucene搜索源码分析 1.概览 从索引文件上来说,Lucene搜索过程:在IndexSearch 初始化的时候先就将.tip .tim文件的内容加载到内存中,在Search的过程中,会从.tip...接下来就看看Lucene的具体源码是怎么实现的,在这个过程中只介绍重要的类和方法,因为整个搜索过程是很复杂的,并且在这个过程中可以看看Lucene搜索操作时间都消耗在了哪里?。...Lucene之所以是搜索引擎开源框架的不二选择,是因为它的搜索效果和速度是真的不错。如果你的程序搜索效果很差,那么一定是你没有善用Lucene

2.2K30

lucene给文本索引和搜索功能的应用

最近一段时间由于公司需要 ,模糊搜索出相似的关键词,所以直接考虑使用了lucene。...lucene允许你往程序中添加搜索功能,lucene能够把你从文本中解析出来的数据进行索引和搜索lucene不关心数据来源 甚至不关心语种,不过你需要把它转换成文本格式。...也就是说你可以搜索 html网页,文本文档,word文档 ,pdf,或者其他一些 总之 只要能够提取出文本信息的即可。...同样你也可以利用lucene来索引存储在数据库中的数据,以给你的用户提供一些  比如 全文搜索功能等 ,反正lucene的功能很是强大。里面还有很多开源的对不同语言进行分析的插件等。...new SortField("contents", SortField.Type.SCORE, false))); TopDocs hits1 = is.search(query, 200);//搜索出前

53730

大数据ELK(四):Lucene的美文搜索案例

,根据之前建立的索引,搜索关键字。...,都是一个字一个字的搜索,但如果搜索一个词,例如:“情愿”,我们会发现,我们什么都搜索不出来。...我们之前在代码中使用的分词器是Lucene中自带的分词器。这个分词器对中文很不友好,只是将一个一个字分出来,所以,就会从后出现上面的问题——无法搜索词语。...支持用户词典扩展定义 针对Lucene全文检索优化的查询分析器IKQueryParser(作者吐血推荐);引入简单搜索表达式,采用歧义分析算法优化查询关键字的搜索排列组合,能极大的提高Lucene检索的命中率...八、句子搜索在cn.it.lucene 包下创建一个SentenceSearch类1、实现步骤要实现搜索句子,其实是将句子进行分词后,再进行搜索。我们需要使用QueryParser类来实现。

49741

「Elasticsearch + Lucene搜索引擎的架构、倒排索引和搜索过程

从一个浪漫的故事开始 许多年前,一个名叫Shay Banon的开发者,带着新婚妻子去伦敦生活,在得知妻子想从事厨师工作后,准备利用自己所学为妻子开发一个食谱搜索引擎,他开始使用Lucene的一个早期版本...那有人会问这个创始人Shay为什么使用的是Apache Lucene而不是再自己开发一个全文搜索库。对于这个问题,猜想是因为Lucene比较成熟,高性能,可扩展,轻量级以及强大的功能。...Lucene内核可以创建为单个Java库文件,并且不依赖第三方代码,用户可以使用它提供的各种所见即所得的全文检索功能进行索引和搜索操作。...如果不需要这些额外的特性,可以下载单个的Lucene core库文件,直接在应用程序中使用它 Apache Lucene的架构与索引和搜索过程 Lucene 架构 Lucene 组件 被索引的文档用Document...search搜索Lucene IndexIndexSearcher计算Term Weight和Score并且将结果返回给用户返回给用户的文档集合用TopDocsCollector表示索引创建过程如下 创建一个

1.2K30

lucene(全文搜索)_根据内容建立索引_源码下载

在我们的开发过程中,会遇到这样的情况: 给出下面的信息,让我们进行建立索引,并且进行搜索信息 ? 这个时候,我们应该怎样处理呢? 要实现这样的功能,其实使用lucene会变得简单很多!!...; 10 import org.apache.lucene.document.Document; 11 import org.apache.lucene.document.Field; 12 import...org.apache.lucene.index.IndexWriter; 15 import org.apache.lucene.index.IndexWriterConfig; 16 import...org.apache.lucene.store.Directory; 17 import org.apache.lucene.store.FSDirectory; 18 import org.apache.lucene.store.LockObtainFailedException...Field.Index.ANALYZED:进行分词和索引,适用于标题,内容等 77 // Field.Index.NOT_ANALYZED:进行索引,但是不进行分词,如身份证号码,姓名,ID等,适用于精确搜索

41510

Apache Lucene全局搜索引擎入门教程

Record(记录) 全文检索 支持 不支持 模糊查询 支持 不支持 结果排序 支持排序 不能排序 Lucene搜索的API类主要有4个 IndexSearch,Query,QueryParser,Hits...Lucene搜索过程 Lucene的索引结构是文档(Document)形式的,下面简单介绍一下Lucene搜索的过程 (1)将文档传给分词组件(Tokenizer),分词组件根据标点符号和停词将文档分成词元...Analyzer:分析器,主要用于分析搜索引擎遇到的各种文本。...Hits:在搜索完成之后,需要把搜索结果返回并显示给用户,只有这样才算是完成搜索的目的。在lucene 中,搜索的结果的集合是用Hits 类的实例来表示的。...附录 Lucene个版本下载url Lucene易百教程 Lucene4.x系列教程 Lucene全文搜索教程

2.6K30

利用Lucene打造站内搜索引擎的思路

1.为什么要用Lucene,而不用直接从数据库里搜索记录?...主要是考虑到几个因素:(1)性能问题,Lucene是基于文件索引的搜索机制,性能要比数据库里检索更快,特别是数据量大的时候两者区别比较明显。...数据库用Select检索时,默认在执行sql语句时,会对表锁定,直到查询完成;(2)目前很多网站,都已经将页面静态化,这种情况下,直接用生成的文件编制索引,再利用Lucene来检索,可以不用查询数据库,...减轻了数据库的压力;(3)Lucene可以更方便的进行分词,支持多个关键字检查等操作,在实现上要比Sql方便;(4)直接基于文件系统的检索,不会有SQL注入风险 2.创建索引 基本上有二种思路,适用于不同的情况...注意:如果要实现特定标签的搜索(比如要按产品价格,产品编号,产品摘要,发布时间等精确搜索产品信息),在读取文件内容时,需要利用正则表达式对Html文件进行匹配分析,得到各个标签的值,再创建Field,加入

64050

lucene思维导图,让搜索引擎不再难懂

首先我们来看张思维导图: 以上是我们java常用的全文搜索引擎框架,很多项目的搜索功能都是基于以上4个框架完成的。 所以lucene到底是干啥的?...Lucene是一套用于全文检索和搜索的开放源代码程序库,一个能够轻松集添加搜索功能到一个应用程序中的简单却强大的核心代码库和API。 Lucene,目前最受欢迎的Java全文搜索框架。...Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。...比如标题内容是“hello lucene”,经过分词之后就是“hello”,“lucene”,这两个单词就是Term的内容信息,当关键字搜索“hello”或者“lucene”的时候这个标题就会被搜索出来...在上面我们了解了lucene的一些基本概念,接下来我们进入原理分析的环节。 (为什么lucene搜索引擎查询这么快?)

1.3K20

Lucene系列(一)什么是 Lucene

前言 上一个系列还没有完结,我又来开新坑啦~ 接触搜索/推荐相关工作,也有两年了。工作里对lucene的接触不少,却也不精。...lucene简介 以下内容来自维基百科: Lucene是一套用于全文检索和搜索的开放源码程序库,由Apache软件基金会支持和提供。...Lucene提供了一个简单却强大的应用程序接口,能够做全文索引和搜索Lucene是现在最受欢迎的免费Java信息检索程序库。...像google这种搜索引擎,可以在0.5s的时间,搜索到与”全文搜索引擎”相关的1230w结果,这显然使用的不是顺序的逐个字符对比,而是类似于lucene的全文搜索了。 ?...只是对全文搜索做一个简单的抽象,用简单的功能映射lucene优秀的实现. 逐一的去学习。

83530
领券