全文索引

[Lucene]-Lucene基本概述以及简单实例

我与影子孤独终老i 提交于 2019-12-24 09:27:42
一、Lucene基本介绍: 基本信息:Lucene 是 Apache 软件基金会的一个开放源代码的全文检索引擎工具包,是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎。Lucene 的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。 文件结构:自上而下树形展开,一对多。 索引Index:相当于库或者表。 段Segment:相当于分库或者分表。 文档Document:相当一条数据 ,如小说吞噬星空 域Field:一片文档可以分为多个域,相当于字段,如:小说作者,标题,内容。。。 词元Term:一个域又可以分为多个词元,词元是做引搜索的最小单位,标准分词下得词元是一个个单词和汉字。 正向信息: 索引->段->文档->域->词 反向信息: 词->文档。  二、Lucene全文检索: 1、数据分类: 结构化数据:数据库,固定长度和格式的数据。 半结构化数据:如xml,html,等..。 非结构化数据:长度和格式都不固定的数据,如文本... 2、检索过程:Luncene检索过程可以分为两个部分,一个部分是上图左侧结构化,半结构化,非结构化数据的索引建立过程,另一部分是右侧索引查询过程。 索引过程: 有一系列被索引文件 被索引文件经过语法分析和语言处理形成一系列词(Term)。

搜索引擎框架介绍

一曲冷凌霜 提交于 2019-12-24 01:26:38
原文: 搜索引擎框架介绍 一、搜索引擎基础介绍 二、常见搜索引擎框架介绍与比较 三、参考文章 一、搜索引擎基础介绍 1. 什么是搜索引擎   搜索引擎,通常指的是收集了万维网上几千万到几十亿个 网页 并对网页中的每一个词(即关键词)进行索引,建立 索引数据库 的 全文搜索引擎 。当用户查找某个关键词的时候,所有在页面内容中包含了该关键词的网页都将作为搜索结果被搜出来。再经过复杂的算法进行排序(或者包含商业化的竞价排名、商业推广或者广告)后,这些结果将按照与搜索关键词的相关度高低(或与相关度毫无关系),依次排列。 2. 传统的搜索与搜索引擎对比 2.1 传统做法 (1)文档中使用系统的Find查找 (2)mysql中使用like模糊查询 存在问题: (1)海量数据中不能及时响应,少量数据可以通过传统的MySql建立索引解决 (2)一些无用词不能进行过滤,没法分词 (3)数据量大的话难以拓展 (4)相同的数据难以进行相似度最高的进行排序 2.2 搜索引擎做法 (1)存储非结构化的数据 (2)快速检索和响应我们需要的信息,快-准 (3)进行相关性的排序,过滤等 (4)可以去掉停用词(没有特殊含义的词,比如英文的a,is等,中文: 这,的,是等),框架一般支持可以自定义停用词 二、常见搜索引擎框架介绍与比较 1. Java 全文搜索引擎框架 Lucene 1.1 简介  

ElasticSearch实战基础知识点

允我心安 提交于 2019-12-22 19:25:54
1、什么是全文检索和Lucene? (1)全文检索,倒排索引 (2)lucene,就是一个jar包,里面包含了封装好的各种建立倒排索引,以及进行搜索的代码,包括各种算法。我们就用java开发的时候,引入lucene jar,然后基于lucene的api进行去进行开发就可以了。用lucene,我们就可以去将已有的数据建立索引,lucene会在本地磁盘上面,给我们组织索引的数据结构。另外的话,我们也可以用lucene提供的一些功能和api来针对磁盘上额 2. 什么是Elasticsearch? 1)自动维护数据的分布到多个节点的索引的建立,还有搜索请求分布到多个节点的执行; 2)自动维护数据的冗余副本,保证说,一些机器当即了,不会丢失任何数据 3)封装了更多高级功能,以给我们提供更多高级智齿,让我们快速开发应用,开发更加复杂的应用:复杂的搜索功能,聚合分析功能,基于地理位置的搜索 3. Elasticsearch的功能,干什么的 1)分布式搜索引擎和数据分析引擎 2)全文检索,结构化检索,数据分析 3)对海量数据进行近实时的处理 4. Elasticsearch的特点 (1)可以作为一个大型分布式集群(数百台服务器)技术,处理PB级数据,服务大公司;也可以运行在单机上,服务小公司 (2)Elasticsearch不是什么新技术,主要是将全文检索、数据分析以及分布式技术,合并在了一起

全文索引(新手自创,只做记录)

我的未来我决定 提交于 2019-12-22 12:40:12
小白式模糊查询(新手记录) 前端搜索框 后端获取数据 vlounteerController vlounteerController ---引用---> 工具类 KeyWordUtil 工具类 KeyWordUtil ---引用---> 字符处理工具类 CharacterUtils DAO层代码 前端搜索框 <div class="nav navbar - nav navbar - right btn - group" > <form action="keywordSearch.do" method="get" > <input name="webpage" type="hidden" value="admin/secondLevel/timelong" > <input name="keyword" type="text" class="search - input" placeholder="请输入关键字" > <input class="search - btn" value="搜索" type="submit" > </form > </div > 后端获取数据 vlounteerController /** * vlounteerController * 模糊查询项目 * 给定网页、关键字 返回网页,并传递List<volunteer> * @param webpage

ElasticSearch

走远了吗. 提交于 2019-12-21 05:45:15
ElasticSearch 一、概念 二、特点 三、es安装使用 3.1 安装es 3.2 安装kibana客户端 3.3 安装head工具 一、概念 ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。ElasticSearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr,也是基于Lucene。 二、特点 原生Lucene使用的不足,优化Lucene的调用方式 高可用的分布式集群 ,处理PB级别数据 它的目的是通过简单的 RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。达到开箱即用的效果 Solr和ES区别: ​ (1)Solr重量级, 支持很多种类型操作,支持分布式式,它里面有很多功能,但是在实时领域上面,没有es好 ​ (2)Es 轻量级, 支持json的操作格式,

MySQL 优化技巧

柔情痞子 提交于 2019-12-20 08:48:12
MySQL优化三大方向: 1 优化MySQL所在服务器内核(此优化一般由运维人员完成)。 2 对MySQL配置参数进行优化(my.cnf)此优化需要进行压力测试来进行参数调整。 3 对SQL语句以及表优化。 MySQL参数优化: 1 MySQL 默认的最大连接数为 100,可以在 mysql 客户端使用以下命令查看 mysql > show variables like 'max_connections' ; + -- -- -- -- -- -- -- -- - + -- -- -- - + | Variable_name | Value | + -- -- -- -- -- -- -- -- - + -- -- -- - + | max_connections | 500 | + -- -- -- -- -- -- -- -- - + -- -- -- - + 1 row in set ( 0.00 sec ) 2 当前连接的线程的个数 mysql > show status like 'threads_connected' ; + -- -- -- -- -- -- -- -- -- - + -- -- -- - + | Variable_name | Value | + -- -- -- -- -- -- -- -- -- - + -- -- -- - + |

介绍几本搜索引擎的基础书

岁酱吖の 提交于 2019-12-19 02:20:04
介绍几本搜索引擎的书给大家 我觉得要想研究搜索引擎,以下三本是目前为止最好的书,我们期待有更好的书以飨读者,我也将为你做些引介。我后面还会为大家介绍些 关于无线搜索方面的书,请大家多多关注。 1、书名:开发自己的搜索引擎 Lucene 2.0+Heritrix-(附光盘) 作 者:邱哲 【内容简介】 本书详细介绍了如何应用Lucene进行搜索引擎开发,通过学习本书,读者可以完成构建一个企业级的搜索引擎网站。. 全书共分为14章,内容包括搜索引擎与信息检索基础,Lucene入门实例,Lucene索引的建立,使用Lucene构建搜索,Lucene的排序,Lucene的分析器,对Word、Excel和PDF格式文档的解析,Compass搜索引擎框架,Lucene分布式和Google Search API,爬虫Heritrix,综合实例之准备篇,综合实例之HTMLParser篇,综合实例之DWR篇,综合实例之Web编。.. 本书是国内第一本使用Lucene和Heritrix来讲解搜索引擎构建的书,通过详细的对API和源代码的分析,力求使读者在应用的基础上,能够深入其核心,自行扩展和开发相应组件,发挥想象力,开发出更具有创意的搜索引擎产品。本书适合Java程序员和从事计算机软件开发的其他编程人员阅读,同时也可以作为搜索引擎爱好者的入门书籍。 由于目前市面上从技术层面介绍搜索引擎的书并不多

mysql全文索引

自作多情 提交于 2019-12-18 21:39:32
上文中,我们了解了MySQL不同引擎下索引的实现原理,在本文我们将继续探讨一下索引的使用以及优化。 创建索引可以大大提高系统的性能。 第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。 第二,可以大大加快数据的检索速度,这也是创建索引的最主要的原因。 第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。 第四,在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。 第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。 也许会有人要问:增加索引有如此多的优点,为什么不对表中的每一个列创建一个索引呢?因为,增加索引也有许多不利的方面。 第一,创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。 第二,索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。 第三,当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。 索引是建立在数据库表中的某些列的上面。在创建索引的时候,应该考虑在哪些列上可以创建索引,在哪些列上不能创建索引。 一般来说,应该在这些列上创建索引: 在经常需要搜索的列上,可以加快搜索的速度;在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构;在经常用在连接的列上

sphinx的安装

情到浓时终转凉″ 提交于 2019-12-18 05:27:39
一、 Sphinx简介 Sphinx是由俄罗斯人Andrew Aksyonoff开发的一个全文检索引擎。意图为其他应用提供高速、低空间占用、高结果 相关度的全文搜索功能。Sphinx可以非常容易的与SQL数据库和脚本语言集成。当前系统内置MySQL和PostgreSQL 数据库数据源的支持,也支持从标准输入读取特定格式 的XML数据。 Sphinx的特性如下: a) 高速的建立索引(在当代CPU上,峰值性能可达到10 MB/秒); b) 高性能的搜索(在2 – 4GB 的文本数据上,平均每次检索响应时间小于0.1秒); c) 可处理海量数据(目前已知可以处理超过100 GB的文本数据, 在单一CPU的系统上可 处理100 M 文档); d) 提供了优秀的相关度算法,基于短语相似度和统计(BM25)的复合Ranking方法; e) 支持分布式搜索; f) 支持短语搜索 g) 提供文档摘要生成 h) 可作为MySQL的存储引擎提供搜索服务; i) 支持布尔、短语、词语相似度等多种检索模式; j) 文档支持多个全文检索字段(最大不超过32个); k) 文档支持多个额外的属性信息(例如:分组信息,时间戳等); l) 支持断词; 虽然mysql的MYISAM提供全文索引,但是性能却不敢让人恭维,另外数据库毕竟不是很善于做这样的事情,我们需要把这些活让给更适合的程序去做,减少数据库的压力

论坛中的问题:47(等待类型为MSSEARCH的进程被KILL之后,一直处于回滚状态)

半世苍凉 提交于 2019-12-11 01:20:50
原文: 论坛中的问题:47(等待类型为MSSEARCH的进程被KILL之后,一直处于回滚状态) 求助:等待类型为MSSEARCH的进程被KILL之后,一直处于回滚状态 http://bbs.csdn.net/topics/391834154 等待类型 : MSSEARCH SQL server 2005 我KILL了一个等待类型为MSSEARCH的进程,然后KILL之后sys.sysprocesses 表里面的status=runnable ,cmd=KILLED/ROLLBACK 。 要命的是再一次KILL这个进程的时候会提示:“SPID 126: 正在进行事务回滚。估计回滚已完成: 0%。估计剩余时间: 0 秒。” 这个回滚持续了三天了,要命的是这个SPID对应的查询里面涉及的表无法做rebuild index 。 MSSEARCH--官方解释:在全文搜索调用期间出现。该等待在全文操作完成时结束。它不指示争用,而指示全文操作的持续时间。 dbcc inputbuffer(126) 查看此进程执行的SQL就是一个普通的.net端传过来的select 。 请嫑让我重启服务,伤不起。 哪位大神遇到过这个恶心的问题,请不吝赐教。 最后回复一下我的解决方案吧: 0.和业务方沟通预估可能影响的业务范围和时间 1.禁用表上的全文索引 2.停掉全文索引服务 3