数据检索

Lucene全文检索-从零开始(1)

这一生的挚爱 提交于 2020-04-04 06:34:28
1.Lucene简介 Lucene是一个开放源代码的全文检索引擎工具包,是一个全文检索引擎的架构,是一款高性能、可扩展的信息检索工具库。 2.全文检索 全文检索是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。这个过程类似于通过字典中的检索字表查字的过程。 3.为什么要用Lucene 也许有人会说我经常都是用like、Match、contain来做基本查询的。当你只有几百行几千行数据时,查询速度很快,但是如果有几十万几百万条数据呢。下面我们对用like关键字查询和使用Lucene查询的时间进行比较。 3.1 Lucene和like的效率比较 数据表中共有数据146450条。 首先我们用like来查询 接着我们使用Lucene检索 通过比较,两者有着明显的差别,lucene几乎是like的40倍。 4.全文检索中分词器的使用 4.1 盘古分词 1 class Program 2 { 3 /// <summary> 4 /// 盘古分词器 5 /// </summary> 6 public Analyzer panGuAnalyzer 7 { 8 get { return new PanGuAnalyzer(); } 9 } 10 11

2 检索数据

旧巷老猫 提交于 2020-04-04 06:01:10
2.1 SELECT语句 它的用途是从一个或多个表中检索信息。 为了使用SELECT检索数据,必须至少给出两条信息——想选择什么,以及从什么地方选择。 2.2 检索单个列 select prod_name from products; 2.3 检索多个列 select prod_id, prod_name, prod_price from products; 2.4 检索所有列 select * from products; 2.5 检索不同的行 select vend_id from products; 使用DISTINCT关键字 select distinct vend_id from products; 2.6 限制结果 为了返回第一行或前几行,可使用LIMIT子句。 默认从0开始,如limit 0,5; select prod_name from products limit 5; 为得出下一个5行,可指定要检索的开始行和行数 select prod_name from products limit 5,5; 行0 检索出来的第一行为行0而不是行1.因此,LIMIT 1,1将检索出第二行而不是第一行。 在行数不够时 LIMIT中指定要检索的行数为检索的最大行数,如果没有足够的行(例如,给出LIMIT 10,5,但只有13行),MySQL将只返回 它能返回的那么多行。

Lucene配置步骤详解

白昼怎懂夜的黑 提交于 2020-04-02 06:26:20
Lucene配置步骤说明:   1.搭建环境;   2.创建索引库;   3搜索索引库。 Lucene配置步骤:    第一部分:搭建环境(创建环境导入jar包)     前提:已经创建好了数据库(直接导入book.sql文件)       第一步:下载Lucene:         Lucene是全文检索功能的工具包,使用时从官方网站下载,并解压         下载版本:4.10.3(要求:jdk1.7以上)       第二步:创建项目导入包,项目结构如下:       第二部分:创建索引         步骤说明:           1.采集数据           2.将数据转换成Lucene文档           3.将文档写入索引库,创建索引        第一步:采集数据           Lucene全文检索不是直接查询数据库,所以需要先将数据采集出来           1.创建Book类         2.创建一个BookDao类         3.创建一个测试类BookDaoTest         4.测试结果,采集数据成功     第二步:将数据转换成Lecene文档         Lucene是使用文档类型来封装数据的,所以需要先将采集的数据转换成文档类型。其格式为:       修改book类,新增一个方法转换数据         第三步

了解搜索引擎技术

元气小坏坏 提交于 2020-03-31 07:39:10
此文纯理论知识,很不错的搜索引擎的资料。 搜索引擎的定义 搜索引擎是传统IR技术在Web环境中的应用。一般来说,搜索引擎是一种用于帮助用户在Internet上查询信息的搜索工具,它以一定的策略在Internet中搜索,发现信息,对信息进行理解,提取,组织和处理,并为用户提供检索服务,从而起到信息导航的目的。 搜索引擎的体系结构 典型的搜索引擎结构一般由以下三个模块组成:信息采集模块(Crawler),索引模块(Indexer),查询模块(Searcher)。 Crawler :从web中采集网页数据 Indexer :对Crawler采集数据进行分析生成索引。 Searcher :接受查询请求,通过一定的查询算法获取查询结果,返回给用户。 -->Crawler Crawler 负责页面信息的采集,工作实现基于以下思想:既然所有网页都可能链接到其他网站,那么从一个网站开始,跟踪所有网页上的所有链接,就有可能检索整个互联 网。Crawler首先从待访问URL队列中获取URLs,根据URL从中抓取网页数据,然后对网页进行分析,从中获取所有的URL链接,并把它们放到待 访问的URL队列中,同时将已访问URL移至已访问的URL队列中。不断重复上面的过程。 Crawler存在以下的关键问题: >多线程抓取时的任务调度问题: 搜索引擎会产生多个Crawler同时对网页进行抓取

linux命令:locate

久未见 提交于 2020-03-31 06:10:21
1、命令简介 locate (locate) 命令用来查找文件或目录。 locate命令要比find -name快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/mlocate/mlocate.db 。这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,因此,我们在用whereis和locate 查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。整个locate工作其实是由四部分组成的: /usr/bin/updatedb 主要用来更新数据库,通过crontab自动完成的 /usr/bin/locate 查询文件位置 /etc/updatedb.conf updatedb的配置文件 /var/lib/mlocate/mlocate.db 存放文件信息的文件 2、用法 -b, --basename match only the base name of path names -c, --count 只输出找到的数量 -d, --database DBPATH 使用DBPATH指定的数据库,而不是默认数据库 /var/lib/mlocate/mlocate.db -e, -

Lucene 初识

柔情痞子 提交于 2020-03-24 14:20:45
因为业务需要,虽然自己不是专门写搜索的,但是需要自己拼一些搜索条件去调用搜索的接口,而之前看的JVM crash里也涉及到了Lucene,所以大概了解一下。 参考文档: http://www.iteye.com/topic/839504 http://www.cnblogs.com/xing901022/p/3933675.html 一、Lucene简介 Lucene 是一个基于 Java 的全文信息检索工具包,它不是一个完整的搜索应用程序,而是为你的应用程序提供索引和搜索功能。Lucene 目前是 Apache Jakarta 家族中的一个开源项目。也是目前最为流行的基于 Java 开源全文检索工具包。 目前已经有很多应用程序的搜索功能是基于 Lucene 的,比如 Eclipse 的帮助系统的搜索功能。Lucene 能够为文本类型的数据建立索引,所以你只要能把你要索引的数据格式转化的文本的,Lucene 就能对你的文档进行索引和搜索。比如你要对一些 HTML 文档,PDF 文档进行索引的话你就首先需要把 HTML 文档和 PDF 文档转化成文本格式的,然后将转化后的内容交给 Lucene 进行索引,然后把创建好的索引文件保存到磁盘或者内存中,最后根据用户输入的查询条件在索引文件上进行查询。不指定要索引的文档的格式也使 Lucene 能够几乎适用于所有的搜索应用程序。

关于Lucene以及索引和搜索的流程

不想你离开。 提交于 2020-03-23 06:12:16
   Lucene的普及和成功的背后是因为它的简单。   因此,你不需要深入理解Lucene的信息索引和检索工作方面的知识就可以开始使用。   Lucene提供了简单但是强大的核心API去实现全文索引和检索,你只需要掌握少数的类就能将Lucene整合到应用中。   刚接触Lucene的人可能会误认为Lucene是一个文件搜索工具、网络爬虫、或者网页搜索引擎。实际上Lucene是一个软件库,而不是一个全功能的搜索应用程序。它涉及全文索引和搜索,而且做得非常好。Lucene可以让你的应用程序隐藏起复杂的索引和搜索背后的操作,而使用简单的API处理特定的问题领域和业务规则。你可以想象Lucene就是像一个层,你的应用就在层的上面。   Lucene允许你添加索引和搜索功能到应用程序中。Lucene不关心数据的来源,Lucene可以索引和搜索任何可以转换成文本格式的数据。这意味着你可以用Lucene索引和搜索数据:远程web服务器上的网页、存储在本地文件系统的文档、简单的文本文件、Microsoft Word文档、HTML或PDF文件,或者其他任何可以从中提取文本信息的格式文件。   所有搜索引擎的核心就是索引的概念:把原始数据处理成一个高效的交叉引用查找,以便快速检索。让我们看看快速高效的索引和搜索过程。    1.索引是什么,为什么它这么重要?    假如你需要搜索大量的文件

Lucene入门

最后都变了- 提交于 2020-03-22 18:15:28
Lucene快速入门:   搭建环境     1.创建工程,引入坐标(springboot工程) <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <skipTests>true</skipTests> </properties> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.4.RELEASE</version> </parent> <dependencies> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2

MySQL必知必会

牧云@^-^@ 提交于 2020-03-19 05:57:41
1.了解SQL 数据库(database)保存有组织的数据的容器(通常是一个文件或一组文件)。 表 (table)某种特定类型数据的结构化清单。 模式(schema)关于数据库和表的布局及特性的信息。 列(column)表中的一个字段。所有的表都是由一个或多个列组成的。 行(row)表中的一个记录。 数据类型(datatype)所容许的数据的类型。 主键(primary key)一列(或一组列),其值能够唯一区分表中每个行。 SQL(发音为字母S-Q-L或sequel)是结构化查询语言(Structured Query Language)的缩写。SQL是一种专门用来与数据库通信的语言。 表中的任何列都可以作为主键,只要它满足以下条件: 任意两行都不具有相同的主键值; 每个行都必须具有一个主键值(主键列不允许 NULL 值)。 SQL 有如下的优点 SQL 不是某个特定数据库供应商专有的语言。几乎所有重要的 DBMS 都支持 SQL ,所以,学习此语言使你几乎能与所以数据库打交道。 SQL 简单易学。它的语句全都是由描述性很强的英语单词组成,而且这些单词的数目不多。 SQL 尽管看上去很简单,但它实际上使一种强有力的语言,灵活使用其语言元素,可以进行非常复杂和高级的数据库操作。 2.操作数据库表 show databases; // 返回当前数据库的列表 use crash; //

Lucene学习之四:Lucene的索引文件格式(1)

♀尐吖头ヾ 提交于 2020-03-15 08:35:50
本文转载自: http://www.cnblogs.com/forfuture1978/archive/2009/12/14/1623597.html Lucene的索引里面存了些什么,如何存放的,也即Lucene的索引文件格式,是读懂Lucene源代码的一把钥匙。 当我们真正进入到Lucene源代码之中的时候,我们会发现: Lucene的索引过程,就是按照全文检索的基本过程,将倒排表写成此文件格式的过程。 Lucene的搜索过程,就是按照此文件格式将索引进去的信息读出来,然后计算每篇文档打分(score)的过程。 本文详细解读了Apache Lucene - Index File Formats( http://lucene.apache.org/java/2_9_0/fileformats.html ) 这篇文章。 一、基本概念 下图就是Lucene生成的索引的一个实例: Lucene的索引结构是有层次结构的,主要分以下几个层次: 索引(Index): 在Lucene中一个索引是放在一个文件夹中的。 如上图,同一文件夹中的所有的文件构成一个Lucene索引。 段(Segment): 一个索引可以包含多个段,段与段之间是独立的,添加新文档可以生成新的段,不同的段可以合并。 如上图,具有相同前缀文件的属同一个段,图中共两个段 "_0" 和 "_1"。 segments