当前位置:首页 » 数据仓库 » java数据库全文检索
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

java数据库全文检索

发布时间: 2022-04-27 23:58:12

⑴ 如何用java的lucene对数据库进行全文检索

lucene是一个公用的全文索引组件,它的目标是把各种各样格式的数据转化成lucene特有的索引文件格式,这样才能通过lucene的高速检索机制进行全文检索。

你的数据来源可以是关系数据库,可以是word、execl、txt文档,可以是html网页,对于这些数据源,你必须将它们内部的数据读取出来,并封装成lucene的document实例,之后让lucene帮你构建索引。

举个例子:你的有一个用户数据库,里面存储了几十万的用户信息,你现在要对这个数据库进行全文索引,那么你要做的事情是:

1.写一段传统的JDBC程序,讲每条的用户信息从数据库读取出来
2.针对每条用户记录,建立一个lucene document
Document doc = new Document();
并根据你的需要,将用户信息的各个字段对应luncene document中的field 进行添加,如:
doc.add(new Field("NAME","USERNAME", Field.Store.YES,Field.Index.UN_TOKENIZED));
然后将该条doc加入到索引中, 如: luceneWriter.addDocument(doc);
这样就建立了lucene的索引库
3.编写对索引库的搜索程序(看lucene文档),通过对lucene的索引库的查找,你可以快速找到对应记录的ID
4.通过ID到数据库中查找相关记录

上面阐述了lucene的大体用法,不知道是不是说的很清楚。

⑵ 用java 实现一个搜索功能,要求搜索某个关键字,然后把包括这个关键字的一段话输出到文档中。qq454284728

一、什么叫搜索引擎?

在Internet上有上百亿可用的公共Web页面,即使是最狂热的冲浪者也不会访问到所有的页面,而只能看到其中的一小部分,更不会在这浩瀚的Web海洋中发现你那即使精彩却渺小的一隅。当然你可以为你的存在做广告,可以用大大的字把你的URL刻在你的身体上,然后裸体穿过白宫草坪,但你得保证媒体正好在那里,并注视到了这一切。与其这样做,不如好好去理解搜索引擎是如何工作的?又怎样选择和使用"keywords"(关键词)等等。
本文的目的就是让众多的页面设计者在了解搜索引擎的基础上,寻求如何使自己的页面在搜索引擎索返回的列表中获得好的排列层次的方法。

"搜索引擎"这个术语一般统指真正意义上的搜索引擎(也就是全文检索搜索引擎)和目录(即目录式分类搜索引擎),其实他们是不一样的,其区别主要在于返回的搜索结果列表是如何编排的。

1、目录

目录(比如Yahoo!)返回的列表是由人工来编排的。
这类引擎提供了一份人工按类别编排的网站目录,各类下边排列着属于这一类别的网站的站名和网址链接,再记录一些摘要信息,对该网站进行概述性介绍(摘要可能是你提交过去的,也可以是引擎站点的编辑为你的站点所做的评价)。人们搜索时就按相应类别的目录查询下去。
这类引擎往往还伴有网站查询功能,也称之为网站检索,即提供一个文字输入框和一个按钮。我们可以在文字框中输入要查找的字、词或短语,再点击按钮,便会在目录中查找相关的站名、网址和内容提要,将查到的内容列表送过来。目前国内Sohoo、常青藤等都是这种搜索方式。

2、搜索引擎

搜索引擎(如HotBot)是自动创建列表的。
搜索引擎看起来与目录的网站查询非常相似,也提供一个文字输入框和按钮,使用方法也相同,而且有些也提供分类目录,但两者却有本质上的区别。
目录的资料库中,搜集保存的是各网站的站名、网址和内容提要;搜索引擎的资料库中,搜集保存的则是各网站的每一个网页的全部内容,范围要大得多。
搜索引擎是以全文检索的方式工作的。全文检索查到的结果不是站名、网址和内容提要,而是与你输入的关键词相关的一个个网页的地址和一小段文字。在这段文字中,可能没有你输入的那个关键词,它只是某一网页的第一段话,甚至是一段无法看懂的标记,但在这个网页中,一定有你所输入的那个关键词,或者相关的词汇。打个比方说,网站查询可以查到网上有哪些报纸,如《文汇报》、《大公报》,而全文检索则可以查到网上这些报纸的每一篇文章中的词汇。

3、两者相结合的搜索引擎

某些搜索引擎同时也提供目录。包含在搜索引擎中的目录通常质量比较高,也能从那里找到许多好站点。因为即使你把你的站点提交过去,也并不能保证一定被加到目录中去,他们把注意力放在那些已经在别的目录中存在的站点上,并有选择地寻找有吸引力的加到自己的目录中。
搜索引擎和目录各有各自不可替代的功用。目录比较简单,要想获得一个好的排列层次,除了你努力创建一个好内容的高品质站点外别无他法。搜索引擎复杂得多,它们随时都在自动地索引众多WEB站点的最新网页,所以常常会发现目录所不能得到的信息。如果你改动了你的页面,搜索引擎还随时会发现这个变化,并重新排列你在列表中的位置。而目录就做不到。下面专门讨论搜索引擎的工作原理以及如何提高在搜索引擎列表中的排列位置。

搜索引擎(search engines)是对互联网上的信息资源进行搜集整理,然后供你查询的系统,它包括信息搜集、信息整理和用户查询三部分。

搜索引擎是一个为你提供信息“检索”服务的网站,它使用某些程序把因特网上的所有信息归类以帮助人们在茫茫网海中搜寻到所需要的信息。

早期的搜索引擎是把因特网中的资源服务器的地址收集起来,由其提供的资源的类型不同而分成不同的目录,再一层层地进行分类。人们要找自己想要的信息可按他们的分类一层层进入,就能最后到达目的地,找到自己想要的信息。这其实是最原始的方式,只适用于因特网信息并不多的时候。随着因特网信息按几何式增长,出现了真正意义上的搜索引擎,这些搜索引擎知道网站上每一页的开始,随后搜索因特网上的所有超级链接,把代表超级链接的所有词汇放入一个数据库。这就是现在搜索引擎的原型。

随着yahoo!的出现,搜索引擎的发展也进入了黄金时代,相比以前其性能更加优越。现在的搜索引擎已经不只是单纯的搜索网页的信息了,它们已经变得更加综合化,完美化了。以搜索引擎权威yahoo!为例,从1995年3月由美籍华裔杨致远等人创办yahoo!开始,到现在,他们从一个单一的搜索引擎发展到现在有电子商务、新闻信息服务、个人免费电子信箱服务等多种网络服务,充分说明了搜索引擎的发展从单一到综合的过程。

然而由于搜索引擎的工作方式和因特网的快速发展,使其搜索的结果让人越来越不满意。例如,搜索“电脑”这个词汇,就可能有数百万页的结果。这是由于搜索引擎通过对网站的相关性来优化搜索结果,这种相关性又是由关键字在网站的位置、网站的名称、 标签等公式来决定的。这就是使搜索引擎搜索结果多而杂的原因。而搜索引擎中的数据库因为因特网的发展变化也必然包含了死链接。

怎样才能使搜索引擎精确地为人们提供相关的信息应该是它以后发展的方向,而不是只求综合服务。
搜索引擎指自动从英特网搜集信息,经过一定整理以后,提供给用户进行查询的系统。英特网上的信息浩瀚万千,而且毫无秩序,所有的信息象汪洋上的一个个小岛,网页链接是这些小岛之间纵横交错的桥梁,而搜索引擎,则为你绘制一幅一目了然的信息地图,供你随时查阅。
搜索引擎的工作原理
搜索引擎的工作原理大致可以分为:
1、搜集信息:搜索引擎的信息搜集基本都是自动的。搜索引擎利用称为网络蜘蛛(spider)的自动搜索机器人程序来连上每一个网页上的超连结。机器人程序根据网页链到其他中的超链接,就象日常生活中所说的“一传十,十传百……”一样,从少数几个网页开始,连到数据库上所有到其他网页的链接。理论上,若网页上有适当的超连结,机器人便可以遍历绝大部分网页。

2、整理信息:搜索引擎整理信息的过程称为“建立索引”。搜索引擎不仅要保存搜集起来的信息,还要将它们按照一定的规则进行编排。这样,搜索引擎根本不用重新翻查它所有保存的信息而迅速找到所要的资料。想象一下,如果信息是不按任何规则地随意堆放在搜索引擎的数据库中,那么它每次找资料都得把整个资料库完全翻查一遍,如此一来再快的计算机系统也没有用。

3、接受查询:用户向搜索引擎发出查询,搜索引擎接受查询并向用户返回资料。搜索引擎每时每刻都要接到来自大量用户的几乎是同时发出的查询,它按照每个用户的要求检查自己的索引,在极短时间内找到用户需要的资料,并返回给用户。目前,搜索引擎返回主要是以网页链接的形式提供的,这些通过这些链接,用户便能到达含有自己所需资料的网页。通常搜索引擎会在这些链接下提供一小段来自这些网页的摘要信息以帮助用户判断此网页是否含有自己需要的内容。

.

⑶ 【java】检索 数据库两个字段 一个检索条件

使用 全文检索 功能 按匹配度排序 ,不同的数据库用法不一样.
比如mysql 是 match against; sqlserver是contains.
而且数据库也要预先配置,有点小复杂,两句话说不清,建议网上搜搜
关键词 全文检索

另外,如果数据量大,并发高. 可以考虑solr等搜索引擎方案.

⑷ 用JAVA实现全文检索

想做全文检索, 文件遍历不是一个意思么, 用File等简单的类就可以做到了, 数据库还没有必要吧

⑸ 全文检索工具有哪些

1. Lucene

Lucene的开发语言是Java,也是Java家族中最为出名的一个开源搜索引擎,在Java世界中已经是标准的全文检索程序,它提供了完整的查询引擎和索引引擎,没有中文分词引擎,需要自己去实现,因此用Lucene去做一个搜素引擎需要自己去架构.另外它不支持实时搜索,但linkedin和twitter有分别对Lucene改进的实时搜素. 其中Lucene有一个C++移植版本叫CLucene,CLucene因为使用C++编写,所以理论上要比lucene快.
2. Sphinx

Sphinx是一个用C++语言写的开源搜索引擎,也是现在比较主流的搜索引擎之一,在建立索引的事件方面比Lucene快50%,但是索引文件比Lucene要大一倍,因此Sphinx在索引的建立方面是空间换取事件的策略,在检索速度上,和lucene相差不大,但检索精准度方面Lucene要优于Sphinx,另外在加入中文分词引擎难度方面,Lucene要优于Sphinx.其中Sphinx支持实时搜索,使用起来比较简单方便.
3. Xapian

Xapian是一个用C++编写的全文检索程序,它的api和检索原理和lucene在很多方面都很相似,算是填补了lucene在C++中的一个空缺.
4. Nutch

Nutch是一个用java实现的开源的web搜索引擎,包括爬虫crawler,索引引擎,查询引擎. 其中Nutch是基于Lucene的,Lucene为Nutch提供了文本索引和搜索的API.

对于应该使用Lucene还是使用Nutch,应该是如果你不需要抓取数据的话,应该使用Lucene,最常见的应用是:你有数据源,需要为这些数据提供一个搜索页面,在这种情况下,最好的方式是直接从数据库中取出数据,并用Lucene API建立索引.
5. DataparkSearch

DataparkSearch是一个用C语言实现的开源的搜索引擎. 其中网页排序是采用神经网络模型. 其中支持HTTP,HTTPS,FTP,NNTP等下载网页.包括索引引擎,检索引擎和中文分词引擎(这个也是唯一的一个开源的搜索引擎里有中文分词引擎).能个性化定制搜索结果,拥有完整的日志记录.
6. Zettair

Zettair是根据Justin Zobel的研究成果为基础的全文检索实验系统.它是用C语言实现的. 其中Justin Zobel在全文检索领域很有名气,是业界第一个系统提出倒排序索引差分压缩算法的人,倒排列表的压缩大大提高了检索和加载的性能,同时空间膨胀率也缩小到相当优秀的水平. 由于Zettair是源于学术界,代码是由RMIT University的搜索引擎组织写的,因此它的代码简洁精炼,算法高效,是学习倒排索引经典算法的非常好的实例. 其中支持linux,windows,mac os等系统.
7. Indri

Indri是一个用C语言和C++语言写的全文检索引擎系统,是由University of Massachusetts和Carnegie Mellon University合作推出的一个开源项目. 特点是跨平台,API接口支持Java,PHP,C++.
来自网络。

⑹ java中怎么使用mysql全文索引

索引是自动使用的,不需要调用,至于创建索引,参照下面的sql
CREATE INDEX 索引名

ON 表名 (索引字段);

⑺ Lucene可以对MYSQL进行全文检索吗

Lucene是可以的,它常见的用例就是在一个或者多个数据库表进行全文检索。 虽然MySql有全文检索的功能,但是如果字段和数据量增加,MySql的性能会减低很快。

⑻ oracle数据库实现全文检索

Oracle全文检索配置方法:

1.检查数据库是否具有全文检索功能(这是针对已经建成使用的数据库)

查看用户中是否存在ctxsys用户,查询角色里是否存在ctxapp角色。以上两个中的1个不满足(不存在),则说明没有装过全文检索功能。

使用contains函数的时候,若没有全文检索则会报错的。

2.若没有,则需要手动建立,先建立全文检索要使用的空间

sqlplus / as sysdba --进入控制台

createtablespaceIdx_ctxsysdatafile'/oradata/sg186fx/ctxsys01.;--创建全文检索使用的表空间

3.创建全文检索使用的用户和角色及相应的包,则需要执行oracle自带的一个脚本:cd $ORACLE_HOME/ctx/admin/catctx.sql

还是在sqlplus中执行:

@?/ctx/admin/catctx.sql ctxsys Idx_ctxsys temp nolock

在执行这个脚本的时候,输入了几个参数,第一个参数ctxsys为ctxsys用户的密码

第二个参数Idx_ctxsys为ctxsys用户要使用的表空间

第三个参数temp为ctxsys用户使用的临时表空间

第四个参数nolock为ctxsys用户处于解锁状态。

4.创建完成后,要登录ctxsys用户

connect ctxsys/ctxsys

执行以下脚本:@?/ctx/admin/defaults/drdefus.sql(这是个很重要的脚本,后面创建索引会使用该脚本创建的信息)

5.创建全文索引语法分析器

先要明确使用全文索引的用户,我要使用全文索引的是sgpm用户

因此

grantexecuteonctxsys.ctx_ddltosgpmwithgrantoption;

connect sgpm/sgpm

设置语法分析器:

execctx_ddl.drop_preference('chinalexer');
execctx_ddl.create_preference('chinalexer','chinese_lexer');

设置词法属性:

execctx_ddl.drop_preference('idx_c_store');
begin
ctx_ddl.create_preference('idx_c_store','BASIC_STORAGE');
ctx_ddl.set_attribut('idx_c_store','I_TABLE_CLAUSE','tablespacesIdx_ctxsy');
ctx_ddl.set_attribute('idx_c_store','I_INDEX_CLAUSE','tablespaceIdx_ctxsycompress2');
end;
/

6.创建索引

createindexsgpm.idx_c_cons_nameonsgpm.c_cons(cons_name)indextypeisctxsys.contextparameters('lexerchinalexerstorageidx_c_store');

7.同步索引

variablejobnonumber;
begin
dbms_job.submit(:jobno,'pkg_sp_tools.p_cont_sys_index();',sysdate,'trunc(sysdate)+19/24+1');--执行的是个性化方法。
end;
/

普通的就是用:

execctx_ddl.sync_index('idx_c_cons_name');

到此,全文检索创建成功,contains函数就可以正常使用了。

注意:创建的过程中会出现ORA-29879:cannot create multiple domain index on a column listusing same indextype ,这说明在其他用户下已经建立了该索引。

⑼ 基于Java的全文检索技术研究的毕业论文

摘 要网络中的资源非常丰富,但是如何有效的搜索信息却是一件困难的事情。建立搜索引擎就是解决这个问题的最好方法。本论文首先详细介绍了基于英特网的搜索引擎的系统结构,然后从网络机器人、索引引擎、Web服务器三个方面进行详细的说明。为了更加深刻的理解这种技术,本人还亲自实现了一个自己的Java搜索引擎——新闻搜索引擎。新闻搜索引擎是从指定的Web页面中按照超连接进行解析、搜索,并把搜索到的每条新闻进行索引后加入数据库。然后通过Web服务器接受客户端请求后从索引数据库中搜索出所匹配的新闻。本人在介绍搜索引擎的章节中除了详细的阐述技术核心外还结合了新闻搜索引擎的实现代码来说明,图文并茂、易于理解。 关键字:搜索引擎,网络机器人,Lucene,中文分词,JavaCC AbstractThe resources in the internet are abundant, but it is a difficult job to search some useful information. So a search engine is the best method to solve this problem. This article fist introces the system structure of search engine based on the internet in detail, and then gives a minute explanation form Spider search, engine and web server. In order to understand the technology more deeply, I have programmed a news search engine by myself in Java.The news search engine is explained and searched according to hyperlink from a appointed web page, then indexes every searched information and adds it to the index database. Then after receiving the customers' requests from the web server, it soon searches the right news form the index engine,In the chapter of introcing search engine, it is not only elaborating the core technology, but also combine with the modern code, pictures included, easy to understand. Key Words:Search Engine, Spider, Lucene, Phrase Query, JavaCC 目 录第1章 引言··· 11.1 选题背景:··· 11.2 现实意义··· 1第2章 搜索引擎的结构··· 32.1 系统概述··· 32.2 搜索引擎的构成··· 32.2.1 网络机器人··· 32.2.2 索引与搜索··· 32.2.3 Web服务器··· 32.3 搜索引擎的主要指标及分析··· 42.4 小节··· 4第3章 网络机器人··· 53.1 什么是网络机器人··· 53.2 网络机器人的结构分析··· 53.2.1 如何解析HTML· 53.2.2 该类几种重要的方法。··· 63.2.3 Spider程序结构··· 63.2.4 如何构造Spider程序··· 73.2.5 如何提高程序性能··· 83.2.6 网络机器人的代码分析··· 93.3 小节··· 10第4章 基于Lucene的索引与搜索··· 114.1 什么是全文检索与全文检索系统?··· 114.2 什么是Lucene全文检索··· 124.3 Lucene的系统结构分析··· 134.3.1 系统结构组织··· 134.3.2 数据流分析··· 144.4 Lucene索引构建逻辑模块分析··· 154.4.1 绪论··· 154.4.2 对象体系与UML图··· 164.4.3 Lucene的包结构··· 204.4.4 Lucene的主要逻辑图··· 214.4.5 对Lucene包的小结··· 224.5 Lucene查询逻辑··· 224.5.1 查询者输入查询条件··· 224.5.2 查询条件被传达到查询分析器中··· 224.5.3 查询遍历树··· 234.5.4 返回结果··· 234.6 Lucene 检索原理··· 234.7 Lucene和Nucth的中文分析模块··· 254.7.1 Nutch分析··· 254.7.2 Nutch中文搜索3.1 中文分词··· 264.7.3 利用JavaCC构造中文分析模块··· 274.7.4 分词小结··· 284.8 Lucene与Spider的结合··· 284.8.1 Index类的实现··· 284.8.2 HTML解析类··· 294.9 Lucene 小结··· 31第5章 基于Lucene的搜索引擎实现··· 325.1 基于Tomcat的Web服务器··· 325.1.1 什么是基于Tomcat的Web服务器··· 325.2 用户接口设计··· 325.2.1 客户端设计··· 325.2.2 服务端设计··· 335.3 在Tomcat上部署项目··· 355.4 小节··· 35第6章 搜索引擎策略··· 366.1 简介··· 366.2 面向主题的搜索策略··· 366.2.1 导向词··· 366.2.2 网页评级··· 366.2.3 权威网页和中心网页··· 376.3 小节··· 38结束语··· 39参考文献··· 40致 谢··· 41外文资料原文··· 42外文原文翻译··· 48 第1章 引言
1.1 选题背景:
面对浩瀚的网络资源,搜索引擎为所有网上冲浪的用户提供了一个入口,毫不夸张的说,所有的用户都可以从搜索出发到达自己想去的网上任何一个地方。因此它也成为除了电子邮件以外最多人使用的网上服务。搜索引擎技术伴随着WWW的发展是引人注目的。搜索引擎大约经历了三代的更新发展:第一代搜索引擎出现于1994年。这类搜索引擎一般都索引少于1,000,000个网页,极少重新搜集网页并去刷新索引。而且其检索速度非常慢,一般都要等待10秒甚至更长的时间。在实现技术上也基本沿用较为成熟的IR(Information Retrieval)、网络、数据库等技术,相当于利用一些已有技术实现的一个WWW上的应用。在1994年3月到4月,网络爬虫World Web Worm (WWWW)平均每天承受大约1500次查询。大约在1996年出现的第二代搜索引擎系统大多采用分布式方案(多个微型计算机协同工作)来提高数据规模、响应速度和用户数量,它们一般都保持一个大约50,000,000网页的索引数据库,每天能够响应10,000,000次用户检索请求。1997年11月,当时最先进的几个搜索引擎号称能建立从2,000,000到100,000,000的网页索引。Altavista搜索引擎声称他们每天大概要承受20,000,000次查询。结束语
本课题对基于因特网的Java搜索引擎结构和性能指标进行了分析,了解Spider程序的结构和功能。在进行海量数据搜索时,如果使用单纯的数据库技术,那将是非常痛苦的,速度将是极大的瓶颈。所以本文提出了使用全文搜索引擎Lucene进行索引、搜索。解决中文分词和有效的中文搜索信息。同时解决了如何把Lucene全文搜索引擎和Spider程序互相集合来实现新闻搜索的功能。对于如何构架基于Tomcat的Web服务器,使得用户通过浏览器进行新闻的搜索有了一定的理解,对Tomcat如何部署进行了说明。
在些基础上,终于可以调试出一个简单的在本地搜索新闻Java搜索引擎。

参考文献
[1] Jeff Heaton(美), Programming Spiders, Bots, and Aggregator in Java.
[2] Borland Software Corporation(美),JBuilder培训教程(译者:周鹏 [等] 译)北京:机械工业出版社
[3]徐宝文,张卫丰. 搜索引擎与信息获取技术.北京:清华大学出版社,2003.5
[4]车东.基于Java的全文搜索引擎Lucene
[5]罗旭.主题搜索引擎的设计与实现
[6]Bruce Eckel(美).Thinking in Java.北京:机械工业出版社
[7] Otis Gospodnetic Erik Hatcher (美).Action in Lucene.电子工业出版社,2007.1
[8]耿祥义,张跃平. JAVA2实用教程(第二版).北京:清华大学出版社,2004.2
[9]刘彬.JSP数据库高级教程.北京:清华大学出版社,2006.3
[10]刘卫国,严晖.数据库技术与应用——SQL Server.北京:清华大学出版社,2007.1
[11]闫宏飞.Tiny Search Engine: Design and implementation(PPT). Oct.2003
[12]李晓明,闫宏飞,王继民.搜索引擎——原理、技术与系统.北京:科学出版社,2004

更多参考请点击 http://www.lw5173.com/article/html/707.html

⑽ java中如何实现全文检索

java的开源的免费全文检索工具Lucene
Lucene不是一个完整的全文索引应用,而是是一个用Java写的全文索引引擎工具包,它可以方便的嵌入到各种应用中实现针对应用的全文索引/检索功能。

Lucene的作者:Lucene的贡献者Doug Cutting是一位资深全文索引/检索专家,曾经是V-Twin搜索引擎(Apple的Copland操作系统的成就之一)的主要开发者,后在Excite担任高级系统架构设计师,目前从事于一些INTERNET底层架构的研究。他贡献出的Lucene的目标是为各种中小型应用程序加入全文检索功能。

Lucene的发展历程:早先发布在作者自己的www.lucene.com,后来发布在SourceForge,2001年年底成为APACHE基金会jakarta的一个子项目:http://jakarta.apache.org/lucene/

已经有很多Java项目都使用了Lucene作为其后台的全文索引引擎,比较着名的有:

Jive:WEB论坛系统;
Eyebrows:邮件列表HTML归档/浏览/查询系统,本文的主要参考文档“TheLucene search engine: Powerful, flexible, and free”作者就是EyeBrows系统的主要开发者之一,而EyeBrows已经成为目前APACHE项目的主要邮件列表归档系统。
Cocoon:基于XML的web发布框架,全文检索部分使用了Lucene
Eclipse:基于Java的开放开发平台,帮助部分的全文索引使用了Lucene

对于中文用户来说,最关心的问题是其是否支持中文的全文检索。但通过后面对于Lucene的结构的介绍,你会了解到由于Lucene良好架构设计,对中文的支持只需对其语言词法分析接口进行扩展就能实现对中文检索的支持。