全文索引

solr和ElasticSearch(ES)的区别?

风流意气都作罢 提交于 2020-01-31 00:13:56
Solr2004年诞生 ElasticSearch 2010年诞生 ES更新 ElasticSearch简介:   ElasticSearch是一个实时的分布式的搜索引擎和分析引擎.它可以帮助你用前所未有的速度去处理大规模数据.   它可以用于全文检索,结构化以及分析.当然你也可以将这三者进行组合.   ElasticSearch是一个建立在全文搜索引擎Apache Lucene基础上的搜索引擎,可以说Lucene是当今最先进,最高效的全共鞥开源搜索引擎框架.   但是Lucene只是一个框架,要充分利用它的功能,需要使用JAVA,并且在程序中集成Lucene.需要很多的学习了解,才能明白它是如何运行的,Lucene确实非常复杂.   ElasticSearch使用Lucene作为内部引擎,但是在使用它做全文检索时,只需要使用统一开发好的API即可,而不需要了解其背后复杂的Lucene的运行原理.   当然Elasticsearch并不仅仅是Lucene这么简单,它不但包括了全文搜索功能,还可以进行一下工作:     分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索.     实时分析的分布式搜索引擎.     可以拓展到上百台服务器上,处理PB级别的结构化和非结构化数据 这么多的功能都被继承到一台服务器上

Coreseek-带中文分词的Sphinx

天涯浪子 提交于 2020-01-28 02:22:33
什么是Coreseek Sphinx默认不支持中文索引及检索,基于Sphinx开发了Coreseek全文检索服务器,Coreseek应该是现在用的最多的Sphinx中文全文检索,它提供了为Sphinx设计的中文分词包LibMMSeg包含mmseg中文分词。 安装 --解压安装包 # tar -zxvf coreseek-3.2.14.tar.gz # ls csft-3.2.14 mmseg-3.2.14 README.txt testpack 安装中文分词mmseg # cd mmseg-3.2.14/ # ./configure --prefix=/usr/local/mmseg --编译报错 config.status: error: cannot find input file: src/Makefile.in --运行下面指令再次编译就能通过了 # automake # make && make install --运行mmseg,输出安装信息则mmseg中文分词已经安装好了 # /usr/local/mmseg/bin/mmseg Coreseek COS(tm) MM Segment 1.0 Copyright By Coreseek.com All Right Reserved. Usage: /usr/local/mmseg/bin/mmseg <option>

全文索引Sphinx和sphinx的中文分词(二)

China☆狼群 提交于 2020-01-27 07:57:03
2.sphinx的中文分词 Coreseek 官网地址:http://www.coreseek.cn/ 使用最多的sphinx中文全文检索,它提供了为Sphinx设计的中文分词包 LibMMSeg。 这个项目用的词库格式与普通词库的格式不一样, 还需要转换一下格式才能转换成词库文件. 这个项目里提供了一个叫mmseg的可执行文件做词库生成, 做繁体的定制是要收费的。 sfc(sphinx-for-chinese) google code:http://code.google.com/p/sphinx-for-chinese/ 这个项目是在每个Sphinx的发行版中, 在sphinxutils.cpp中加入了一个新参数 chinese-dictionary, 在sphinx.cpp 中加入mmseg实现的分词算法, 除此外没有其他改动, 比较接近原始的sphinx程序. 它的词典是用mkdict.exe生成的, 词典就是规则的 word fq 格式, 直接用convertz转换简体至繁体, 也可以顺利生成词典. 有一个小小的缺憾是似乎不能设置复合分词, 例如”官方声明”会被作为单个词索引, 这样搜索”声明”时不会出现. 复合分词的冗余会带来磁盘消耗, 但是实际使用中还是需要有复合分词的支持。 SCWS 官网:http://www.ftphp.com/scws/

全文索引Sphinx和sphinx的中文分词(一)

南笙酒味 提交于 2020-01-26 17:46:00
1.Sphinx是什么 Sphinx是有俄罗斯人Andrew Aksyonoff 开发的一个 全文检索引擎 ( 计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个 索引 ,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式 )。意图为其他应用提供高速、低空间占用、高结果相关度的全文搜索功能。Sphinx可以非常容易的与SQL数据库和脚本语言集成。当前系统内置 Mysql 和PostgreSQL数据库数据源的支持,也支持从标准输入读取特定格式的XML数据。通过修改源代码,用户可以自行增加新的数据源(例如:其他类型的DBMS的原生支持) Sphinx是基于SQL的全文检索引擎,可以结合MySQL,PostgreSQL做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。Sphinx特别为一些脚本语言设计搜索API接口,如PHP,Python,Perl,Ruby等,同时为MySQL也设计了一个存储引擎插件。 Sphinx 单一索引最大可包含1亿条记录,在1千万条记录情况下的查询速度为 0.x秒(毫秒级) 。Sphinx创建索引的速度为:创建100万条记录的索引只需 3~4分钟,创建1000万条记录的索引可以在50分钟内完成,而只包含最新10万条记录的增量索引

Lucene简介和使用

筅森魡賤 提交于 2020-01-26 02:59:15
全文检索 数据分类: 结构化数据:格式、长度、类型等固定,如数据库中的数据 非结构化数据:格式、长度、类型等不固定,如pdf、html文件 数据查询: 结构化数据:sql语句 非结构化数据:将非结构化数据转换为结构化数据,建立索引然后查询 全文检索就是先创建索引然后查询索引的过程 全文检索的应用场景 : 搜索引擎,如百度、谷歌 站内搜索,如微博、csdn文章 电商搜索,如淘宝、京东 等等 Lucene简介 Lucene是一个基于Java开发的开源全文检索引擎工具包,但它 不是一个完整的全文检索引擎,而是一个全文检索引擎的架构 ,提供了完整的查询引擎和索引引擎,部分文本分析引擎。 Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。 Lucene提供了一个简单却强大的应用程式接口,能够做全文索引和搜寻。 Lucene实现全文检索流程 上面说到 全文检索就是先创建索引然后查询索引的过程 ,Lucene实现全文检索就是需要创建索引和查询索引。 使用Lucene 创建索引 需要的jar包: commons-io-2.6.jar junit-4.10.jar lucene-analyzers-common-7.4.0.jar lucene-core-7.4.0.jar 测试用的原始文档D:\java

Solr和ES对比

我是研究僧i 提交于 2020-01-25 23:16:48
搜索引擎选择: Elasticsearch与Solr 搜索引擎选型调研文档 Elasticsearch简介 * Elasticsearch是一个 实时 的 分布式 搜索和分析引擎。它可以帮助你用前所未有的速度去处理大规模数据。 它可以用于 全文搜索 , 结构化搜索 以及 分析 ,当然你也可以将这三者进行组合。 Elasticsearch是一个 建立在全文搜索引擎 Apache Lucene™ 基础上 的搜索引擎,可以说Lucene是当今最先进,最高效的全功能开源搜索引擎框架。 但是Lucene只是一个框架,要充分利用它的功能,需要使用JAVA,并且在程序中集成Lucene。需要很多的学习了解,才能明白它是如何运行的,Lucene确实非常复杂。 Elasticsearch使用Lucene作为内部引擎,但是在使用它做全文搜索时,只需要使用统一开发好的API即可,而不需要了解其背后复杂的Lucene的运行原理。 当然Elasticsearch并不仅仅是Lucene这么简单,它不但包括了全文搜索功能,还可以进行以下工作: 分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索。 实时分析的分布式搜索引擎。 可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据。 这么多的功能被集成到一台服务器上,你可以轻松地通过客户端或者任何你喜欢的程序语言与ES的RESTful API进行交流

Sphinx + Coreseek 实现中文分词搜索

自古美人都是妖i 提交于 2020-01-25 16:51:25
Sphinx + Coreseek 实现中文分词搜索 Sphinx Coreseek 实现中文分词搜索 全文检索 1 全文检索 vs 数据库 2 中文检索 vs 汉化检索 3 自建全文搜索与使用Google等第三方站点提供的站内全文搜索的差别 Sphinx Coreseek介绍 Coreseek安装使用 1. 全文检索 1.1 全文检索 vs. 数据库 全文检索是数据库的有力补充,全文检索并不能替代数据库在应用系统中的作用。当应用系统的数据以大量的文本信息为主时,採用全文检索技术能够极大的提升应用系统的价值。 数据库搜索。假设搜索范围包含所有正文数据。往往性能非常低。用户响应时间长(分钟级。常常超时);而全文检索能够在0.x秒(毫秒级)的时间内将结果反馈给用户; 数据库搜索。一个用户在搜索。往往影响其它用户的相应用系统进行操作。全文检索能够同一时候支持多个用户并发搜索,其它相应用系统进行操作的用户不受影响。 数据库搜索非常难实现多个关键字的复合搜索。而全文检索能够实现多个关键词的复合搜索。包含 “和(AND)”、“或(OR)”、“否(NOT)” 等; 数据库搜索难于对结果进行相关度排序,当检索结果多时。用户往往难于找到最恰当的文档。而全文检索通过统计的研究成果。能够将文档进行相关度排序后。再返回给用户,提高用户的效率; 全文检索还能够对检索结果的数据进行聚类分析(Group,

Lucene 原理与代码分析完整版

孤街浪徒 提交于 2020-01-24 11:06:29
Lucene 原理与代码分析系列文章已经基本告一段落,可能问题篇还会有新的更新。 完整版pdf可由以下链接下载。 Lucene 原理与代码分析完整版 目录如下: 目录 目录 第一篇:原理篇 第一章:全文检索的基本原理 一、总论 二、索引里面究竟存些什么 三、如何创建索引 第一步:一些要索引的原文档 (Document) 。 第二步:将原文档传给分次组件 (Tokenizer) 。 第三步:将得到的词元 (Token) 传给语言处理组件 (Linguistic Processor) 。 第四步:将得到的词 (Term) 传给索引组件 (Indexer) 。 1. 利用得到的词 (Term) 创建一个字典。 2. 对字典按字母顺序进行排序。 3. 合并相同的词 (Term) 成为文档倒排 (Posting List) 链表。 四、如何对索 引进行搜索? 第一步:用户输入查询语句。 第二步:对查询语句进行词法分析,语法分析,及语言处理。 1. 词法分 析主要用来识别单词和关键字。 2. 语法分析主要是根据查询语句的语法规则来形成一棵语法树。 3. 语言处理同索引过程中的语言处理几乎相同。 第三步:搜索索引,得到符合语法树的文档。 第四步:根据得到的文档和查询语句的相关性,对结果进行排序。 1. 计算权重 (Term weight) 的过程。 2. 判断 Term

Lucene 3.0 原理与代码分析

最后都变了- 提交于 2020-01-23 07:43:58
本系列文章将详细描述几乎最新版本的Lucene的基本原理和代码分析。 其中总体架构和索引文件格式是Lucene 2.9的,索引过程分析是Lucene 3.0的。 鉴于索引文件格式没有太大变化,因而原文没有更新,原理和架构的文章中引用了前辈的一些图,可能属于早期的Lucene,但不影响对原理和架构的理解。 本系列文章尚在撰写之中,将会有分词器,段合并,QueryParser,查询语句与查询对象,搜索过程,打分公式的推导等章节。 提前给大家分享,希望大家批评指正。 Lucene学习总结之一:全文检索的基本原理 http://www.cnblogs.com/forfuture1978/archive/2009/12/14/1623594.html Lucene学习总结之二:Lucene的总体架构 http://www.cnblogs.com/forfuture1978/archive/2009/12/14/1623596.html Lucene学习总结之三:Lucene的索引文件格式(1) http://www.cnblogs.com/forfuture1978/archive/2009/12/14/1623597.html Lucene学习总结之三:Lucene的索引文件格式(2) http://www.cnblogs.com/forfuture1978/archive/2009/12

Sphinx与coreseek

妖精的绣舞 提交于 2020-01-21 13:38:29
Sphinx : 高性能 SQL 全文检索引擎 分类 编程技术 Sphinx是一款基于SQL的高性能全文检索引擎,Sphinx的性能在众多全文检索引擎中也是数一数二的,利用Sphinx,我们可以完成比数据库本身更专业的搜索功能,而且可以有很多针对性的性能优化。 Sphinx 的特点 快速创建索引:3分钟左右即可创建近100万条记录的索引,并且采用了增量索引的方式,重建索引非常迅速。 闪电般的检索速度:尽管是1千万条的大数据量,查询数据的速度也在毫秒级以上,2-4G的文本量中平均查询速度不到0.1秒。 为很多脚本语言设计了检索API,如PHP,Python,Perl,Ruby等,因此你可以在大部分编程应用中很方便地调用Sphinx的相关接口。 为MySQL设计了一个存储引擎插件,因此如果你在MySQL上使用Sphinx,那简直就方便到家了。 支持分布式搜索,可以横向扩展系统性能。 PHP+MySQL+Sphinx 搜索引擎架构图 在 MySQL 中安装 Sphinx Sphinx在MySQL上安装有两种方式: 第一种方式是采用API调用,我们可以使用PHP,Python,Perl,Ruby等编程语言的API函数进行查询,这种方式不必重新编译MySQL,模块间改动比较少,相对灵活。 第二种需要重新编译MySQL,将Sphinx以插件的方式编译到MySQL中去,这种方式对程序改动比较少