全文检索

Lucene小记(入门篇),索引创建、更新、删除、查找等操作。

时间秒杀一切 提交于 2019-12-03 11:57:35
虽然使用 Lucene 已经有一段时间了,但是仍不敢妄加评论 Lucene 的好与坏,毕竟目前接触的全文索引技术只有 Lucene 。而且 Lucene 并不是 真正意义上的引擎,只算的上是 Java 开发的全文索引工具包。与传统的数据库查询对比,全文索 引技术更具有优势。 Lucene 不仅可以对磁盘文件进行索引,也可以对数据库记录进行索引, 并且支持的索引文件格式多种多样(结合其他的文本处理工具)。言归正传,本文将为读者具体讲解 Lucene 的基本使用,入门级。 本文 Lucene 使用的版本为 4.0.0 1. 创建索引。 索引创建原理大致分为以下几步: 分词,将原文档传给分词组件进行分词,得到词元。 词元处理,将词元传给语言处理组件进行一些语言处理,例如:变小写,转词根。 索引,对处理后的词元建立词典。例如,词‘中国’出现在 ID 为 2 , 5 , 7 的文档中,出现频率分别为 1 , 5 , 3 次。 具体实现如下: 创建索引时需要两个目录,一个是索引文件的存放目录( indexPath ),一个是待索引的文件目录( docsPath )。在创建索引时,我们首先要加载或创建索引目录。常用的目录创建方式有两种: 通过RAMDirectory()类创建一个内存目录,内存目录优点是速度快,缺点是程序退出后索引目录数据就会丢失。 RAMDirectory directory

sql server 全文检索 使用

匿名 (未验证) 提交于 2019-12-03 00:40:02
目前项目中的日志查询 功能 由于长年累月的写入,目前已经达到千万级,对日志进行like 查询,速度可想而知。 此处只讨论 在数据库的优化。 当时 想到两个方案,一个是分区,一个 是全文检索。 分区的话,如果跨区,速度也会很慢,并且对区粒度的划分也得考虑,并且既然使用 like ‘%XX%’,必然不会走索引。 所以 选择 sqlserver 的full-text search 功能,该功能类似一个轻量级搜索引擎。 实现步骤: 1. 首先安装sqlserver时,必须选择安装FULL-Text search功能 2. 创建全文目录,如图,右键 创建即可, 表或者视图 --右键--定义全文索引--下一步,直到 选择索引 界面,如果存在全文索引,则系统默认选中,否则,会提示 无有效索引。 原文:https://www.cnblogs.com/cuihongyu3503319/p/9273070.html

solr4.5配置tomcat7

匆匆过客 提交于 2019-12-02 02:30:05
一、准备数据 1.去官网下载最新的solr。当前最新为4.5版本。 2.准备tomcat7.(下载tomcat7) 二、配置solr。 1.将下载的solr4.5解压得到: 2.将 example\solr-webapp 下的solr.war 放到tomcat的webapp下。 3.启动tomcat 此时报错,solr.war 解压 关闭tomcat 删除solr.war 4.得到solr 项目 5.配置solr_home :将下载的solr包中解压的example/solr 文件夹copy到 d:/solr/solr_home(路径可以任意修改)。 6.打开tomcat下的webapp\solr\WEB-INF 下的web.xml,修改添加如下代码: <env-entry> <env-entry-name>solr/home</env-entry-name> <env-entry-value>D:/solr/solr_home</env-entry-value> <env-entry-type>java.lang.String</env-entry-type> </env-entry> 7.其中<env-entry-value> 中的值即为第5步中配置的路径。 8.copy 下载包中的 example\lib\ext 下的jar包全部放到tomcat 的lib目录下。

Apache Lucene全文检索

你。 提交于 2019-12-01 21:27:57
Lucene4.0的官网文档: http://lucene.apache.org/core/4_0_0/core/overview-summary.html 一、什么是lucene Lucene是一套用于全文检索和搜寻的开源程式库是全文检索的框架而不是产品(不像百度不同), lucene其实就做两种工作:一入一出。所谓入是写入,即将你提供的源(本质是字符串)写入索引或者将其从索引中删除;所谓出是读出,即向用户提供全文搜索服务,让用户可以通过关键词定位源。 百科是这样说的:Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。 lucene能做什么 要回答这个问题, 先要了解 lucene 的本质。 实际上 lucene 的功能很单一, 说到 底, 就是你给它若干个字符串, 然后它为你提供一个全文搜索服务, 告诉你你要 搜索的关键词出现在哪里。 知道了这个本质, 你就可以发挥想象做任何符合这个 条件的事情了。 你可以把站内新闻都索引了, 做个资料库;

Elasticsearch全文检索入门一

房东的猫 提交于 2019-12-01 19:47:25
一、信息检索概述 1、 信息过载 据百度百科介绍,信息过载是指社会信息超过了个人或 系统 所能 接受 、处理或有效利用的范围,并导致故障的状况。 信息过载有以下3个特点 (1)受传者对信息反映的速度远远低于 信息传播 的速度; (2) 大众媒介 中的信息量大大高于受众所能消费、承受或需要的信息量; (3)大量无关的没用的冗余的数据信息严重干扰了受众对相关有用信息的 准确性 的选择。 2、信息过载的原因 随着互联网、传感器,以及各种数字化终端设备的普及,一个万物互联的世界正在成型。同时,随着数据呈现出爆炸式的指数级增长,数字化已经成为构建现代社会的基础力量,并推动着我们走向一个深度变革的时代。 据IDC发布《数据时代2025》的报告显示,全球每年产生的数据将从2018年的33ZB增长到175ZB,相当于每天产生491EB的数据。那么175ZB的数据到底有多大呢?1ZB相当于1.1万亿GB。如果把175ZB全部存在DVD光盘中,那么DVD叠加起来的高度将是地球和月球距离的23倍(月地最近距离约39.3万公里),或者绕地球222圈(一圈约为四万公里)。目前美国的平均网速为25Mb/秒,一个人要下载完这175ZB的数据,需要18亿年。 这些飞速增长的数据造成了数据过载的原因,所以我们处在一个数据时代,也是一个数据过载的时代 3、大数据的特点(IBM提出) 大数据的5V特点: Volume

关于jforum2.1.6的全文检索问题(采用lucene实现)

一世执手 提交于 2019-12-01 07:53:22
在WEB开发板块中,有谈论到jforum2.1.6的中文问题,也涉及到了全文检索,这里采用lucene来实现全文检索。 具体操作方案为: 1、原来的检索是通过net.jforum.dao.generic.GenericSearchDAO来实施的,现在制作一个类net.jforum.dao.generic.GenericSearchLuceneDAO 2、net.jforum.dao.generic.GenericDataAccessDriver类中private static SearchDAO searchDao = new GenericSearchDAO();替换成private static SearchDAO searchDao = new GenericSearchLuceneDAO();从而采用GenericSearchLuceneDAO来实现检索 3、为使用cache,需要在SystemGlobals.properties文件中,对应的cacheable.objects追加net.jforum.lucene.DBForumFactory。说明:net.jforum.lucene包就是我们追加的采用lucene的解决方案。 4、追加实现lucene的方案,即包net.jforum.lucene下的所有内容 注:为了触发lucene,需要在net.jforum

Elasticsearch全文检索学习

让人想犯罪 __ 提交于 2019-12-01 02:43:01
ElasticSearch 官方网址: https://www.elastic.co ElasticSearch官方网址 ( 中文 ): https://www.elastic.co/cn/ Elasticsearch 权威指南(中文版文档,在线观看): https://es.xiaoleilu.com/ 1、ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。ElasticSearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr,也是基于Lucene。 2、Elastic Stack生态(简称ELK Stack,包括 Elasticsearch、Kibana、Beats 和 Logstash)。Elasticsearch是与名为Logstash的数据收集和日志解析引擎以及名为Kibana的分析和可视化平台一起开发的。

lucene全文检索

浪尽此生 提交于 2019-11-30 13:23:50
什么是全文检索 将数据分为两类, 结构化数据和非结构化数据 结构化数据: 有固定格式和有限长度, 比如关系型数据库中的数据, 查询的方式: sql 在数据量特别大的时候,可以考虑使用全文检索技术 非结构化数据: 没有固定格式和没有规定长度,比如电脑上的文档:txt,word 查询方式: 对于少量数据可以肉眼查找 对于大量数据可以使用全文检索技术 二.什么是全文检索技术 全文检索: 先建立索引,再对索引进行搜索的过程就叫做全文检索技术 三. 全文检索适用场景 分为三种情形 搜索引擎: 谷歌 百度 360 搜狗 搜搜 站内搜索: 网站内部进行搜索,如京东,淘宝,天涯,微博,猫扑 垂直搜索: 视屏网站的搜索,比如在优酷中可以搜索到腾讯的视频 四. 如何实现全文检索 在这里可以使用lucene进行实现 五. 什么是lucene? lucene 是apache提供用来实现全文检索的一套类库,jar,并不是框架 需要使用的坐标 第一步:导入jar 必须的包:lucene-core-4.10.3.jar lucene-analyzers-common-4.10.3.jar 分词器 commons-io.jar junit.jar <dependency> <groupId>org.apache.lucene</groupId> <artifactId>lucene-analyzers

Lucene实现全文检索的流程

倾然丶 夕夏残阳落幕 提交于 2019-11-29 23:24:46
索引和搜索流程图 绿色表示索引过程,对要搜索的原始内容进行索引构建一个索引库,索引过程包括: 确定原始内容(即要搜索的内容)-->采集文档-->创建文档-->分析文档-->索引文档 红色表示搜索过程,从索引库中搜索内容,搜索过程包括: 用户通过搜索界面-->创建查询-->执行搜索,从索引库搜索-->渲染搜索结果 创建索引 对文档索引的过程,将用户要搜索的文档内容进行索引,索引存储在索引库(index)中。 这里我们要搜索的文档是磁盘上的文本文件,根据案例描述:凡是文件名或文件内容包括关键字的文件都要找出来,这里要对文件名和文件内容创建索引。 1)获得原始文档 原始文档 是指要索引和搜索的内容。原始内容包括互联网上的网页、数据库中的数据、磁盘上的文件等。 2)创建文档对象 获取原始内容的目的是为了索引,在索引前需要将原始内容创建成文档( Document ),文档中包括一个一个的域( Field ),域中存储内容。 这里我们可以将磁盘上的一个文件当成一个 document , Documen t中包括一些 Field ( file_name 文件名称、 file_path 文件路径、 file_size 文件大小、 file_content 文件内容),如下图: 注意:每个 Document 可以有多个 Field ,不同的 Document 可以有不同的 Field ,同一个

Lucene索引的建立和查找索引

我的未来我决定 提交于 2019-11-29 22:23:48
本篇文章使用的是Lucene4.2版本 首先创建索引分析器,建立IndexWriter对象 File docDir = new File(filePath); Directory dir = null; try { dir = FSDirectory.open(new File(indexPath)); } catch (Exception e) { return; } Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_42); IndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_42, analyzer); iwc.setOpenMode(OpenMode.CREATE_OR_APPEND);//设置索引模式 IndexWriter writer = new IndexWriter(dir, iwc); indexDocs(writer, docDir); 对象 docDir 为你要 建立索引的目录或文件, 参数 indexPath 为你要保存索引文件的目录 private void indexDocs(IndexWriter writer, File file) throws Exception { if (file.canRead()) { if