Lucene
文章平均质量分 69
wbj0110
这个作者很懒,什么都没留下…
展开
-
实时分布式搜索引擎 Solandra
Solandra (原名为 Lucandra) = Cassandra + LuceneSolandra = Solr + CassandraSolandra 是一个实时的分布式搜索引擎,基于 Apache Solr 和 Apache Cassandra 构建.在线PPT演示:https://docs.google.com/present/view?id=d93fq7n_20fnj...原创 2013-12-04 10:11:22 · 582 阅读 · 0 评论 -
Lucene 源代码剖析-1 Lucene是什么
1 Lucene是什么Apache Lucene是一个高性能(high-performance)的全能的全文检索(full-featured text search engine)的搜索引擎框架库,完全(entirely)使用Java开发。它是一种技术(technology),适合于(suitable for)几乎(nearly)任何一种需要全文检索(full-text ...原创 2014-08-08 11:17:12 · 101 阅读 · 0 评论 -
Lucene 源代码剖析-3 索引文件概述
Lucene 源码剖析2 索引文件 为了使用Lucene来索引数据,首先你得把它转换成一个纯文本(plain-text)tokens的数据流(stream),并通过它创建出Document对象,其包含的Fields成员容纳这些文本数据。一旦你准备好些Document对象,你就可以调用IndexWriter类的addDocument(Documen...原创 2014-08-08 11:33:08 · 111 阅读 · 0 评论 -
Lucene 源代码剖析-3 索引文件结构(2)
Lucene 源码剖析 3.3 每个Segment包含的文件 剩下的文件(remaining files)都是per-segment(每个片断文件),因此(thus)都用后缀来定义(defined by suffix)。 3.3.1 Fields域数据文件3.3.1.1 Field信息(...原创 2014-08-08 11:37:11 · 123 阅读 · 0 评论 -
Lucene 源代码剖析-4 索引文件结构(3)
Lucene源代码剖析3.3.3 Term频率数据(.frq) Term频率数据文件(.frq文件)存储容纳了每一个term的文档列表,以及该term出现在该文档中的频率(出现次数frequency,如果omitTf设置为fals时才存储)。 版本包含的项父类型类型描述全部版...原创 2014-08-08 11:40:10 · 166 阅读 · 0 评论 -
Lucene 源代码剖析-5 索引文件结构(4)
Lucene 源码剖析 3.3.6 Term向量文件 Term向量(vector)的支持是field基本组成中对一个field来说的可选项,它包含如下4种文件: 1. 文档索引或.tvx文件:对每个文档来说,它把偏移(offset)存储进文档数据(.tvd)文件和域field数据(.tvf)文件 ...原创 2014-08-08 11:42:24 · 111 阅读 · 0 评论 -
Lucene 源代码剖析-8 索引是如何创建的
Lucene 源码剖析4 索引是如何创建的为了使用Lucene来索引数据,首先你比把它转换成一个纯文本(plain-text)tokens的数据流(stream),并通过它创建出Document对象,其包含的Fields成员容纳这些文本数据。一旦你准备好些Document对象,你就可以调用IndexWriter类的addDocument(Document)方法来传递...原创 2014-09-08 14:24:23 · 169 阅读 · 0 评论 -
Lucene 源代码剖析-8 索引创建过程
Lucene 源码剖析4.3 索引创建过程 文档的索引过程是通过DocumentsWriter的内部数据处理链完成的,DocumentsWriter可以实现同时添加多个文档并将它们写入一个临时的segment中,完成后再由IndexWriter和SegmentMerger合并到统一的segment中去。DocumentsWriter支持多线程处理,即多个线程同时添加文...原创 2014-09-08 14:25:07 · 179 阅读 · 0 评论 -
Lucene 源代码剖析-9索引是如何存储的
Lucene 源码剖析5 索引是如何存储的 5.1 数据存储类Directory Directory及相关类负责文档索引的存储。 5.1.1 org.apache.lucene.store.Directory 一个Directory对象是一系列统一的文件列表(a flat lis...原创 2014-09-09 15:06:32 · 129 阅读 · 0 评论 -
lucene4.5源码分析系列:索引缓存以及刷新
缓存和刷新是比较重要的问题,它涉及到lucene如何管理内存和磁盘。前面提到索引的结果是缓存在内存中的,等到一定时候才会将其刷新到硬盘上去。缓存在这里的目的无非是缓解高速设备到低速设备的不匹配。下面这些问题都比较重要:调用增删改索引后此时索引时已经写入磁盘还是仍然驻留内存,即索引的刷新时间是什么?其次,缓存会占用多少内存?另外,刷新的效率如何?最后,lucene允许多个线程并发刷新索引,具体实...原创 2014-09-17 08:46:10 · 160 阅读 · 0 评论 -
lucene4.5源码分析系列:分析器
分析器是lucene中非常重要的一个组件,许多包都是分析器的子包,这是因为分析器需要支持很多不同的语言。lucene中的分析器 分析器可能会做的事情有:将文本拆分为单词,去除标点,将字母变为小写,去除停用词,词干还原,词形归并,敏感词过滤等等。lucene中默认自带的分析器有4个:WhitespaceAnalyzer,SimpleAnalyzer,StopAnalyzer, Stand...原创 2014-09-17 08:46:42 · 151 阅读 · 0 评论 -
lucene4.5源码分析系列:搜索过程
IndexSearcher是搜索的入口,主要提供的api都是关于search的。关于搜索,比较有意思的话题有这么几个:如何计算打分,这个问题已经在空间向量模型一文中讨论过?如何从一个搜索词得到一个Query对象?如何从Query对象到评分器从而计算打分的?几个重要的参数是如何在被组织起来计算的,比如n, filter, sort, collector等。另外,分页是如何进行的? 本文以展...原创 2014-09-17 08:47:00 · 116 阅读 · 0 评论 -
lucene4.5源码分析系列:索引的创建过程
在开始之前,先对IndexWriter的所需要考虑的问题有个大致的了解。IndexWriter主要负责索引数据写入,所以,增删改是主要需要考虑的问题;其次,由于写入的过程涉及成功失败的问题,所以,事务以及二阶段事务也是应该考虑到的;再来就是需要写入过程有最大的吞吐量,所以,还存在缓存以及刷新的问题;另外,如何让多线程高效并发访问索引也是要思考的;还有,通常查找内容的数量都非常庞大,如何管理索引...原创 2014-09-17 08:47:19 · 146 阅读 · 0 评论 -
lucene4.5源码分析系列:lucene的默认评分算法-向量空间模型(Vector Space Model)
在lucene4以前,一直都是使用经典的向量空间模型作为其检索模型,这种方式虽然统一了评分算法,简化了计算,但是带来的问题是很难去调整,一旦向量空间模型不适合,也很难去替换一种更好的算法。 而lucene4则将检索模型与事实上的搜索做了解耦和抽象,并且加入了另外几种检索模型的实现,其中就有经典的BM25。 经典的向量空间模型的理论基础及其在lucene中的应用 向量空间模...原创 2014-09-17 08:47:36 · 124 阅读 · 0 评论 -
lucene4.5源码分析系列:lucene默认索引的文件格式-总述
学习lucene索引文件格式的目的是通过对lucene数据结构的理解,从而为lucene索引实现打下基础。索引文件的整体结构 如下图,这是整个索引文件的整体结构,可以看到,实际上lucene索引保存下了相当多的东西 但是,单从上面的文件罗列,很难看出来一个整体的结构,那么,接下来这张图就向我们展示这个结构,原图来源于网络,但是由于已经过时,我根据lucene最新的版本重...原创 2014-09-18 09:34:41 · 180 阅读 · 0 评论 -
Lucene 源代码剖析-12 如何给文档评分 源代码剖析-11 如何给文档评分
Lucene 源码剖析7 如何给文档评分 Similarity类负责给文档评分。 7.1 文档评分类Similarity7.1.1 org.apache.lucene.search. SimilaritySimilarity类实现算分(scoring)的API,它的子类实现了检索算分的算法。DefaultSimilar...原创 2014-09-18 09:35:20 · 119 阅读 · 0 评论 -
solr 自定义 dismax查询方式
1、在solrconfig.xml中增加Xml代码 <queryParser name="imdismax" class="com.szhtp.search.parse.IMDisMaxQParserPlugin" /> <requestHandler name="imdismax" class="solr.Sear...原创 2013-09-29 09:04:05 · 96 阅读 · 0 评论 -
lucene文件格式
定义 Lucene中最基础的概念是索引(index),文档(document),域(field)和项(term)。 索引包含了一个文档的序列。 · 文档是一些域的序列。 · 域是一些项的序列。 · 项就是一个字串。 存在于不同域中的同一个字串被认为是不同的项。因此项实际是用一对字串表示的,第一个字串是域名,第二个是域中的字串。 倒排索引 为了使得基于项的搜索更有效率,索引中项是静态存储的。Lu...原创 2013-09-26 08:52:56 · 127 阅读 · 0 评论 -
全文检索引擎 Sphinx
Sphinx是一个基于SQL的全文检索引擎,可以结合MySQL,PostgreSQL做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。Sphinx特别为一些脚本语言设计搜索API接口,如PHP,Python,Perl,Ruby等,同时为MySQL也设计了一个存储引擎插件。Sphinx 单一索引最大可包含1亿条记录,在1千万条记录情况下的查询速度为0...原创 2013-12-05 09:36:23 · 176 阅读 · 0 评论 -
Lucene索引查看工具 Luke
Luke 是查询LUCENE索引文件的工具, 而且用 Luke 的Search可以做查询Luke is a handy development and diagnostic tool, which accesses already existing Lucene indexes and allows you to display and modify their contents in...原创 2013-12-09 10:08:24 · 220 阅读 · 0 评论 -
Java 全文搜索框架 Lucene
Lucene 是apache软件基金会一个开放源代码的全文检索引擎工具包,是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎。 Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。Lucene最初是由Doug Cutting所撰写的,是一位资深全文索引/检索专家,曾经是V-Tw...原创 2013-12-11 13:31:39 · 245 阅读 · 0 评论 -
防暴力破解
包:lucene-analyzers-3.6.1.jarlucene-core-3.6.1.jarlucene-highlighter-3.6.1.jarlucene-smartcn-3.6.1.jar Java代码 package com.nanjing.chaoxing.lucene; import java.io.F...原创 2014-07-02 09:25:00 · 149 阅读 · 0 评论 -
Solr4.0搭建应用
今天看到Solr4.0于是心血来潮重新整理一下,因为之前只整理过3.6的,而且还没有发到博客上。 下载地址http://lucene.apache.org/solr/ 点击下面的4.0 转向到http://www.apache.org/dyn/closer.cgi/lucene/solr/4.0.0 我推荐大家用这个 http://labs.mop.com/apache-mirror/luc...原创 2013-09-04 12:29:25 · 132 阅读 · 0 评论 -
深入 Lucene 索引机制
架构概览图一显示了 Lucene 的索引机制的架构。Lucene 使用各种解析器对各种不同类型的文档进行解析。比如对于 HTML 文档,HTML 解析器会做一些预处理的工作,比如过滤文档中的 HTML 标签等等。HTML 解析器的输出的是文本内容,接着 Lucene 的分词器(Analyzer)从文本内容中提取出索引项以及相关信息,比如索引项的出现频率。接着 Lucene 的分词器把这些信...原创 2013-09-05 09:27:32 · 110 阅读 · 0 评论 -
初识 Lucene
Lucene 是一个基于 Java 的全文信息检索工具包,它不是一个完整的搜索应用程序,而是为你的应用程序提供索引和搜索功能。Lucene 目前是 Apache Jakarta 家族中的一个开源项目。也是目前最为流行的基于 Java 开源全文检索工具包。目前已经有很多应用程序的搜索功能是基于 Lucene 的,比如 Eclipse 的帮助系统的搜索功能。Lucene 能够为文本类型的数据建...原创 2013-09-05 09:27:49 · 132 阅读 · 0 评论 -
Drupal 中文切面搜索 - Search API + Facet API + Apache Solr + IKAnalyzer
Drupal 7 可以处理简单的中文搜索,如果你需要一个更灵活的搜索功能,想要更高的效率与更准确的搜索结果,可以试试 search_api + facetapi + search_api_solr + IKAnalyzer 。Search API搜索了非常灵活的搜索方式,它是一个搜索框架,你可以定制需要索引的字段,流程等等,安装以后,你要先创建搜索服务器,服务器需要安装其它的模块来提...原创 2013-09-05 09:28:20 · 318 阅读 · 0 评论 -
solr性能调优
Schema Design Considerations indexed fields indexed fields 的数量将会影响以下的一些性能: 索引时的时候的内存使用量 索引段的合并时间 优化时间 索引的大小 我们可以通过 将 omitNorms=“true” 来减少indexed fields数量增...原创 2013-09-07 11:40:47 · 142 阅读 · 0 评论 -
Lucene 倒排索引机制
利用 Lucene,在创建索引的工程中你可以充分利用机器的硬件资源来提高索引的效率。当你需要索引大量的文件时,你会注意到索引过程的瓶颈是在往磁盘上写索引文件的过程中。为了解决这个问题, Lucene 在内存中持有一块缓冲区。但我们如何控制 Lucene 的缓冲区呢?幸运的是,Lucene 的类 IndexWriter 提供了三个参数用来调整缓冲区的大小以及往磁盘上写索引文件的频率。 1.合并因...原创 2013-09-07 11:41:21 · 151 阅读 · 0 评论 -
lucene 的分析器(analyzer)与分词器(tokenizer)和过滤器(tokenfilter)
1〉analyzer主要包含分词器跟过滤器,他的功能就是:将分词器跟分析器进行合理的组合,使之产生对文本分词和过滤效果。因此,分析器使用分词和过滤器构成一个管道,文本在“滤过”这个管道之后,就成为可以进入索引的最小单位。 2〉tokenizer主要用于对文本资源进行切分,将文本规则切分为一个个可以进入索引的最小单元 3〉tokenfilter主要对分词器切分的最小单位进入索引进行预处理,如:大...原创 2013-09-08 10:43:01 · 340 阅读 · 0 评论 -
Solr的自动完成实现方式(Suggester方式)
开始 这里有一点需要提醒:Suggest组件在1.4.1或以下版本不可用。要使用这个组件,你需要下载3_x或lucene/solr的主干版本。 配置 在索引配置之前,我们定义一个searchComponent: <searchComponent name="suggest" class="solr.SpellCheckComponent"> <lst name...原创 2013-09-10 09:46:56 · 114 阅读 · 0 评论 -
Lucene关于实现Similarity自定义排序
开场白: 作为一个人才网站的搜索功能,不但需要考滤搜索性能与效率,与需要注意用户体验,主要体现于用户对搜索结果的满意程度.大家都知道Lucene的排序中,如果单纯使用Lucene的DefaultSimilarity作为一个相似度的排序,意思是说总体上越相关的记录需要排得越前,但事与愿违.这样使用户体现也表现得相当糟糕.关键字"程序员"标题中也不能保证全部都匹配到(搜索结果来自 www.jobu...原创 2013-09-10 09:48:13 · 177 阅读 · 0 评论 -
搜索引擎相关学习
1:搜索引擎按原理和工作方式可分为:A:爬虫式,主要用Socket实现,基于TCP/IP协议B:目录索引式,以早期的yahoo为代表C:元搜索引擎,即将多个搜索引擎的结果合并返回2:按领域范围可分为:A:通用搜索引擎---针对全互联网全部网站和各种数据信息,信息全,领域广B:垂直搜索引擎---针对果某一行业,如企业库搜索,供求信息搜索,房产搜索等3:信息类型分类:...原创 2013-09-11 09:50:02 · 162 阅读 · 0 评论 -
Lucene打分规则
搜索排序结果的控制 Lucnen作为搜索引擎中,应用最为广泛和成功的开源框架,它对搜索结果的排序,有一套十分完整的机制来控制;但我们控制搜索结果排序的目的永远只有一个,那就是信息过滤,让用户快速,准确的找到其想要的结果,丰富用户体验。 以前看过一个牛人的博客,总结了4个地方,可对Lucene检索结果的排序进行控制,现在已经记不住。我自己简单整理了下面几个,若有疏漏,欢迎补...原创 2013-09-24 09:04:14 · 229 阅读 · 0 评论 -
Lucene 源代码剖析-10 文档内容是如何分析的
Lucene 源码剖析 文档内容是如何分析的 Analyzer类负责分析文档结构并提取内容。 6.1 文档分析类Analyzer6.1.1 org.apache.lucene.store.AnalyzerAnalyzer类构建用于分析文本的TokenStream对象,因此(thus)它表示(represent)用于从...原创 2014-09-18 09:36:23 · 140 阅读 · 0 评论