全文检索功能

全文检索功能
全文检索功能

在应用中加入全文检索功能

——基于java的全文索引引擎lucene简介

作者:车东 email: https://www.360docs.net/doc/3a8931948.html,/https://www.360docs.net/doc/3a8931948.html,

写于:2002/08 最后更新:

版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明

https://www.360docs.net/doc/3a8931948.html,/tech/lucene.html

关键词:lucene java full-text search engine chinese word segment

内容摘要:

lucene是一个基于java的全文索引工具包。

1.基于java的全文索引引擎lucene简介:关于作者和lucene的历史

2.全文检索的实现:luene全文索引和数据库索引的比较

3.中文切分词机制简介:基于词库和自动切分词算法的比较

4.具体的安装和使用简介:系统结构介绍和演示

5.hacking lucene:简化的查询分析器,删除的实现,定制的排序,应用接口的扩展

6.从lucene我们还可以学到什么

基于java的全文索引/检索引擎——lucene

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

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

lucene的发展历程:早先发布在作者自己的https://www.360docs.net/doc/3a8931948.html,,后来发布在sourceforge,2001年年底成为apache基金会jakarta的一个子项目:https://www.360docs.net/doc/3a8931948.html,/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良好架构设计,对中文的支持只需对其语言词法分析接口进行扩展就能实现对中文检索的支持。

全文检索的实现机制

lucene的api接口设计的比较通用,输入输出结构都很像数据库的表==>记录==>字段,所以很多传统的应用的文件、数据库等都可以比较方便的映射到lucene的存储结构/接口中。总体上看:可以先把lucene

当成一个支持全文索引的数据库系统。

比较一下lucene和数据库:

全文检索≠ like "%keyword%"

通常比较厚的书籍后面常常附关键词索引表(比如:北京:12, 34页,上海:3,77页……),它能够帮助读者比较快地找到相关内容的页码。而数据库索引能够大大提高查询的速度原理也是一样,想像一下通过书后面的索引查找的速度要比一页一页地翻内容高多少倍……而索引之所以效率高,另外一个原因是它是排好序的。对于检索系统来说核心是一个排序问题。

由于数据库索引不是为全文索引设计的,因此,使用like "%keyword%"时,数据库索引是不起作用的,在使用like查询时,搜索过程又变成类似于一页页翻书的遍历过程了,所以对于含有模糊查询的数据库服务来说,like对性能的危害是极大的。如果是需要对多个关键词进行模糊匹配:like"%keyword1%" and like "%keyword2%" ...其效率也就可想而知了。

所以建立一个高效检索系统的关键是建立一个类似于科技索引一样的反向索引机制,将数据源(比如多篇文章)排序顺序存储的同时,有另外一个排好序的关键词列表,用于存储关键词==>文章映射关系,利用这样的映射关系索引:[关键词==>出现关键词的文章编号,出现次数(甚至包括位置:起始偏移量,结束偏

移量),出现频率],检索过程就是把模糊查询变成多个可以利用索引的精确查询的逻辑组合的过程。从而大大提高了多关键词查询的效率,所以,全文检索问题归结到最后是一个排序问题。

由此可以看出模糊查询相对数据库的精确查询是一个非常不确定的问题,这也是大部分数据库对全文检索支持有限的原因。lucene最核心的特征是通过特殊的索引结构实现了传统数据库不擅长的全文索引机制,并提供了扩展接口,以方便针对不同应用的定制。

可以通过一下表格对比一下数据库的模糊查询:

全文检索和数据库应用最大的不同在于:让最相关的头100条结果满足98%以上用户的需求

lucene的创新之处:

大部分的搜索(数据库)引擎都是用b树结构来维护索引,索引的更新会导致大量的io操作,lucene在实现中,对此稍微有所改进:不是维护一个索引文件,而是在扩展索引的时候不断创建新的索引文件,然后定期的把这些新的小索引文件合并到原先的大索引中(针对不同的更新策略,批次的大小可以调整),这样在不影响检索的效率的前提下,提高了索引的效率。

lucene和其他一些全文检索系统/应用的比较:

关于亚洲语言的的切分词问题(word segment)

对于中文来说,全文索引首先还要解决一个语言分析的问题,对于英文来说,语句中单词之间是天然通过空格分开的,但亚洲语言的中日韩文语句中的字是一个字挨一个,所有,首先要把语句中按“词”进行索引的话,这个词如何切分出来就是一个很大的问题。

首先,肯定不能用单个字符作(si-gram)为索引单元,否则查“上海”时,不能让含有“海上”也匹配。

但一句话:“北京天安门”,计算机如何按照中文的语言习惯进行切分呢?

“北京天安门” 还是“北京天安门”?让计算机能够按照语言习惯进行切分,往往需要机器有一个比较丰富的词库才能够比较准确的识别出语句中的单词。

另外一个解决的办法是采用自动切分算法:将单词按照2元语法(bigram)方式切分出来,比如:

"北京天安门" ==> "北京京天天安安门"。

这样,在查询的时候,无论是查询"北京" 还是查询"天安门",将查询词组按同样的规则进行切分:"北京","天安安门",多个关键词之间按与"and"的关系组合,同样能够正确地映射到相应的索引中。这种方式对于其他亚洲语言:韩文,日文都是通用的。

基于自动切分的最大优点是没有词表维护成本,实现简单,缺点是索引效率低,但对于中小型应用来说,基于2元语法的切分还是够用的。基于2元切分后的索引一般大小和源文件差不多,而对于英文,索引文件一般只有原文件的30%-40%不同,

目前比较大的搜索引擎的语言分析算法一般是基于以上2个机制的结合。关于中文的语言分析算法,大家可以在google查关键词"wordsegment search"能找到更多相关的资料。

安装和使用

下载:https://www.360docs.net/doc/3a8931948.html,/lucene/

注意:lucene中的一些比较复杂的词法分析是用javacc生成的(javacc:javacompilercompiler,纯java 的词法分析生成器),所以如果从源代码编译或需要修改其中的queryparser、定制自己的词法分析器,还需要从https://https://www.360docs.net/doc/3a8931948.html,/下载javacc。

lucene的组成结构:对于外部应用来说索引模块(index)和检索模块(search)是主要的外部应用入口

简单的例子演示一下lucene的使用方法:

?语言分析器提供了抽象的接口,因此语言分析(analyser)是可以定制的,虽然lucene缺省提供了2个比较通用的分析器simpleanalyser和standardanalyser,这2个分析器缺省都不支持中文,

所以要加入对中文语言的切分规则,需要修改这2个分析器。

?lucene并没有规定数据源的格式,而只提供了一个通用的结构(document对象)来接受索引的输入,因此输入的数据源可以是:数据库,word文档,pdf文档,html文档……只要能够设计相

应的解析转换器将数据源构造成成docuement对象即可进行索引。

?对于大批量的数据索引,还可以通过调整indexerwrite的文件合并频率属性(mergefactor)来提高批量索引的效率。

检索过程和结果显示:

搜索结果返回的是hits对象,可以通过它再访问document==>field中的内容。

假设根据body字段进行全文检索,可以将查询结果的path字段和相应查询的匹配度(score)打印出来,

public class search {

public static void main(string[] args) throws exception {

string indexpath = args[0], querystring = args[1];

//指向索引目录的搜索器

searcher searcher = new indexsearcher(indexpath);

//查询解析器:使用和索引同样的语言分析器

query query = queryparser.parse(querystring, "body",

new simpleanalyzer());

//搜索结果使用hits存储

hits hits = searcher.search(query);

//通过hits可以访问到相应字段的数据和查询的匹配度

for (int i=0; i

system.out.println(hits.doc(i).get("path") + "; score: " +

hits.score(i));

};

}

}

在整个检索过程中,语言分析器,查询分析器,甚至搜索器(searcher)都是提供了抽象的接口,可以根据需要进行定制。

hacking lucene

简化的查询分析器

个人感觉lucene成为jakarta项目后,画在了太多的时间用于调试日趋复杂queryparser,而其中大部分是大多数用户并不很熟悉的,目前lucene支持的语法:

query ::= ( clause )*

clause ::= ["+", "-"] [ ":"] ( | "(" query ")")

中间的逻辑包括:and or + - &&||等符号,而且还有"短语查询"和针对西文的前缀/模糊查询等,个人感觉对于一般应用来说,这些功能有一些华而不实,其实能够实现目前类似于google的查询语句分析功能其实对于大多数用户来说已经够了。所以,lucene早期版本的queryparser仍是比较好的选择。

添加修改删除指定记录(document)

lucene提供了索引的扩展机制,因此索引的动态扩展应该是没有问题的,而指定记录的修改也似乎只能通过记录的删除,然后重新加入实现。如何删除指定的记录呢?删除的方法也很简单,只是需要在索引时根据数据源中的记录id专门另建索引,然后利用indexreader.delete(termterm)方法通过这个记录id删除相应的document。

根据某个字段值的排序功能

lucene缺省是按照自己的相关度算法(score)进行结果排序的,但能够根据其他字段进行结果排序是一个在lucene的开发邮件列表中经常提到的问题,很多原先基于数据库应用都需要除了基于匹配度(score)以外的排序功能。而从全文检索的原理我们可以了解到,任何不基于索引的搜索过程效率都会导致效率非常的低,如果基于其他字段的排序需要在搜索过程中访问存储字段,速度回大大降低,因此非常是不可取的。

但这里也有一个折中的解决方法:在搜索过程中能够影响排序结果的只有索引中已经存储的docid和score 这2个参数,所以,基于score以外的排序,其实可以通过将数据源预先排好序,然后根据docid进行排序来实现。这样就避免了在lucene搜索结果外对结果再次进行排序和在搜索过程中访问不在索引中的某个字段值。

这里需要修改的是indexsearcher中的hitcollector过程:

...

scorer.score(new hitcollector() {

private float minscore = 0.0f;

public final void collect(int doc, float score) {

if (score > 0.0f && // ignore zeroed buckets

(bits==null || bits.get(doc))) { // skip docs not in bits

totalhits[0]++;

if (score >= minscore) {

/* 原先:lucene将docid和相应的匹配度score例入结果命中列表中:

* hq.put(new scoredoc(doc, score)); // update hit queue

* 如果用doc 或 1/doc 代替 score,就实现了根据docid顺排或逆排

* 假设数据源索引时已经按照某个字段排好了序,而结果根据docid排序也就实现了

* 针对某个字段的排序,甚至可以实现更复杂的score和docid 的拟合。

*/

hq.put(new scoredoc(doc, (float) 1/doc ));

if (hq.size() > ndocs) { // if hit queue overfull

hq.pop(); // remove lowest in hit queue

minscore = ((scoredoc)hq.top()).score; // reset minscore

}

}

}

}

}, reader.maxdoc());

更通用的输入输出接口

虽然lucene没有定义一个确定的输入文档格式,但越来越多的人想到使用一个标准的中间格式作为lucene 的数据导入接口,然后其他数据,比如pdf只需要通过解析器转换成标准的中间格式就可以进行数据索引了。这个中间格式主要以xml为主,类似实现已经不下4,5个:

数据源: word pdf html db other

\ | | | /

xml中间格式

|

lucene index

目前还没有针对msword文档的解析器,因为word文档和基于ascii的rtf文档不同,需要使用com对象机制解析。这个是我在google上查的相关资料:

https://www.360docs.net/doc/3a8931948.html,/products/enterprise_applications.asp

另外一个办法就是把word文档转换成text:http://www.winfield.demon.nl/index.html

索引过程优化

索引一般分2种情况,一种是小批量的索引扩展,一种是大批量的索引重建。在索引过程中,并不是每次新的doc加入进去索引都重新进行一次索引文件的写入操作(文件i/o是一件非常消耗资源的事情)。

lucene先在内存中进行索引操作,并根据一定的批量进行文件的写入。这个批次的间隔越大,文件的写入次数越少,但占用内存会很多。反之占用内存少,但文件io操作频繁,索引速度会很慢。在indexwriter 中有一个merge_factor参数可以帮助你在构造索引器后根据应用环境的情况充分利用内存减少文件的操作。根据我的使用经验:缺省indexer是每20条记录索引后写入一次,每将merge_factor增加50倍,索引速度可以提高1倍左右。

搜索过程优化

lucene支持内存索引:这样的搜索比基于文件的i/o有数量级的速度提升。

https://www.360docs.net/doc/3a8931948.html,/lpt/a/3273

而尽可能减少indexsearcher的创建和对搜索结果的前台的缓存也是必要的。

lucene面向全文检索的优化在于首次索引检索后,并不把所有的记录(document)具体内容读取出来,而起只将所有结果中匹配度最高的头100条结果(topdocs)的id放到结果集缓存中并返回,这里可以比较一下数据库检索:如果是一个10,000条的数据库检索结果集,数据库是一定要把所有记录内容都取得以后再开始返回给应用结果集的。所以即使检索匹配总数很多,lucene的结果集占用的内存空间也不会很多。对于一般的模糊检索应用是用不到这么多的结果的,头100条已经可以满足90%以上的检索需求。

如果首批缓存结果数用完后还要读取更后面的结果时searcher会再次检索并生成一个上次的搜索缓存数大1倍的缓存,并再重新向后抓取。所以如果构造一个searcher去查1-120条结果,searcher其实是进行了2次搜索过程:头100条取完后,缓存结果用完,searcher重新检索再构造一个200条的结果缓存,依此类推,400条缓存,800条缓存。由于每次searcher对象消失后,这些缓存也访问那不到了,你有可能想将结果记录缓存下来,缓存数尽量保证在100以下以充分利用首次的结果缓存,不让lucene浪费多次检索,而且可以分级进行结果缓存。

lucene的另外一个特点是在收集结果的过程中将匹配度低的结果自动过滤掉了。这也是和数据库应用需要将搜索的结果全部返回不同之处。

我的一些尝试:

?支持中文的tokenizer:这里有2个版本,一个是通过javacc生成的,对cjk部分按一个字符一个token索引,另外一个是从simpletokenizer改写的,对英文支持数字和字母token,对中文

按迭代索引。

?基于xml数据源的索引器:xmlindexer,因此所有数据源只要能够按照dtd转换成指定的xml,就可以用xmlindxer进行索引了。

?根据某个字段排序:按记录索引顺序排序结果的搜索器:indexordersearcher,因此如果需要让搜索结果根据某个字段排序,可以让数据源先按某个字段排好序(比如:pricefield),这样

索引后,然后在利用这个按记录的id顺序检索的搜索器,结果就是相当于是那个字段排序的结

果了。

从lucene学到更多

luene的确是一个面对对象设计的典范

?所有的问题都通过一个额外抽象层来方便以后的扩展和重用:你可以通过重新实现来达到自己的目的,而对其他模块而不需要;

?简单的应用入口searcher, indexer,并调用底层一系列组件协同的完成搜索任务;

?所有的对象的任务都非常专一:比如搜索过程:queryparser分析将查询语句转换成一系列的精确查询的组合(query),通过底层的索引读取结构indexreader进行索引的读取,并用相应的打

分器给搜索结果进行打分/排序等。所有的功能模块原子化程度非常高,因此可以通过重新实现

而不需要修改其他模块。

?除了灵活的应用接口设计,lucene还提供了一些适合大多数应用的语言分析器实现(simpleanalyser,standardanalyser),这也是新用户能够很快上手的重要原因之一。

这些优点都是非常值得在以后的开发中学习借鉴的。作为一个通用工具包,lunece的确给予了需要将全文检索功能嵌入到应用中的开发者很多的便利。

此外,通过对lucene的学习和使用,我也更深刻地理解了为什么很多数据库优化设计中要求,比如:

?尽可能对字段进行索引来提高查询速度,但过多的索引会对数据库表的更新操作变慢,而对结果过多的排序条件,实际上往往也是性能的杀手之一。

?很多商业数据库对大批量的数据插入操作会提供一些优化参数,这个作用和索引器的merge_factor的作用是类似的,

?20%/80%原则:查的结果多并不等于质量好,尤其对于返回结果集很大,如何优化这头几十条结果的质量往往才是最重要的。

?尽可能让应用从数据库中获得比较小的结果集,因为即使对于大型数据库,对结果集的随机访问也是一个非常消耗资源的操作。

参考资料:

apache: lucene project

https://www.360docs.net/doc/3a8931948.html,/lucene/

lucene开发/用户邮件列表归档

lucene-dev@https://www.360docs.net/doc/3a8931948.html,

lucene-user@https://www.360docs.net/doc/3a8931948.html,

the lucene search engine: powerful, flexible, and free

https://www.360docs.net/doc/3a8931948.html,/javaworld/jw-09-2000/jw-0915-lucene_p.html

lucene tutorial

https://www.360docs.net/doc/3a8931948.html,/puff/lucene/lucene.html

notes on distributed searching with lucene

https://www.360docs.net/doc/3a8931948.html,/markharwood/lucene/

中文语言的切分词

https://www.360docs.net/doc/3a8931948.html,/search?sourceid=navclient&hl=zh-cn&q=chinese+word+segment

搜索引擎工具介绍

https://www.360docs.net/doc/3a8931948.html,/

搜索引擎行业研究

https://www.360docs.net/doc/3a8931948.html,/

lucene作者cutting的几篇论文:

https://www.360docs.net/doc/3a8931948.html,/publications.html

lucene的.net实现:

https://www.360docs.net/doc/3a8931948.html,/projects/nlucene

lucene作者cutting的另外一个项目:基于java的索引引擎nutch

https://www.360docs.net/doc/3a8931948.html,/https://www.360docs.net/doc/3a8931948.html,/projects/nutch/

关于基于词表和n-gram的切分词比较

http://china.nikkeibp.co.jp/cgi-bin/china/news/int/int200302100112.html

特别感谢:

前网易cto许良杰(jack xu)给我的指导:是您将我带入了搜索引擎这个行业。

原文出处:https://www.360docs.net/doc/3a8931948.html,/tech/lucene.html

一种基于Lucene的中文全文检索系统

—94— 一种基于Lucene 的中文全文检索系统 苏潭英1,郭宪勇2,金 鑫3 (1. 解放军信息工程大学电子技术学院,郑州 450004;2. 北京飞燕技术公司,北京 100072;3. 解放军通信指挥学院,武汉 430010)摘 要:在开源全文索引引擎Lucene 的基础上,设计了一个中文全文检索系统模型,该模型系统由7个模块组成,索引模块、检索模块是其中的核心部分。论述了模型的整体结构,分析设计了索引及检索模块,通过具体的索引技术和检索技术来提高整个系统的检索效率。该系统增加了加密模块,实现对建立的全文索引进行加密处理,增强了信息的安全性。 关键词:全文检索;Lucene ;倒排索引 Chinese Full-text Retrieval System Based on Lucene SU Tan-ying 1, GUO Xian-yong 2, JIN Xin 3 (1. Institute of Electronic Technology, PLA Information Engineering University, Zhengzhou 450004; 2. Technology Company of Beijing Feiyan, Beijing 100072; 3. Institute of PLA Communication Command, Wuhan 430010) 【Abstract 】This paper proposes a model of Chinese full-text retrieval system based on Lucene which is an open source full-text retrieval engine,and expatiates its frame. This model is composed of seven modules, among which the index module and the search module are the core parts. It designs them concretely, and improves the search efficiency of the full-text retrieval system with index technology and search technology. The system model concludes an encryption module to encrypt the index and increases the system security. 【Key words 】full-text retrieval; Lucene; inverse index 计 算 机 工 程Computer Engineering 第33卷 第23期 Vol.33 No.23 2007年12月 December 2007 ·软件技术与数据库· 文章编号:1000—3428(2007)23—0094—03 文献标识码:A 中图分类号:TP391 1 中文全文检索系统 全文检索技术是一个最普遍的信息查询应用,人们每天在网上使用Google 、百度等搜索引擎查找自己所需的信息,这些搜索引擎的核心技术之一就是全文检索。随着文档处理电子化、无纸化的发展,图书馆、新闻出版、企业甚至个人的电子数据激增,如何建立数据库、管理好自己的数据,是亟待解决的问题,而全文检索是其中一个非常实用的功能。全文检索产品实际上是一个内嵌该项技术的数据库产品[1]。 西文的全文检索已有许多成熟的理论与方法,其中,开放源代码的全文检索引擎Lucene 是Apache 软件基金会Jakarta 项目组的一个子项目,它的目的是为软件开发人员提供一个简单易用的工具包,方便在目标系统中实现全文检索的功能。很多项目使用了Lucene 作为其后台的全文索引引擎,比较著名的有: (1)Jive :Web 论坛系统; (2)Cocoon :基于XML 的Web 发布框架,全文检索部分使用了Lucene ; (3)Eclipse :基于Java 的开放开发平台,帮助部分的全文索引使用了Lucene 。 Lucene 不支持中文,但可以通过扩充它的语言分析器实现对中文的检索。本文在深入学习研究Lucene 的前提下,设计了一个中文的全文检索系统,对其核心的索引模块和检索模块进行了阐释,并添加了加密模块对索引信息加密,增强了系统的安全性。 2 系统的总体结构 本模型总体上采用了Lucene 的架构。Lucene 的体系结构如表1所示,它的源代码程序由7个模块组成。 表1 Lucene 的组成结构 模块名 功能 org.apache.Lucene.search 搜索入口 org.apache.Lucene.index 索引入口 org.apache.Lucene.analysis 语言分析器 org.apache.Lucene.queryParser 查询分析器 org.apache.Lucene.document 存储结构 org.apache.Lucene.store 底层IO/存储结构 org.apache.Lucene.util 一些公用的数据结构 本文通过扩充Lucene 系统来完成中文的全文检索系统,Lucene 包含了大量的抽象类、接口、文档类型等,需要根据具体应用来定义实现,本文对其作了如下扩充修改: (1)按照中文的词法结构来构建相应的语言分析器。Lucene 的语言分析器提供了抽象的接口,因此,语言分析(analyser)是可以定制的。Lucene 缺省提供了2个比较通用的分析器SimpleAnalyser 和StandardAnalyser ,但这2个分析器缺省都不支持中文,因此,要加入对中文语言的切分规则,需要对其进行修改。 (2)按照被索引的文件的格式对不同类型的文档进行解析,进而建立全文索引。例如HTML 文件,通常需要把其中的内容分类加入索引,这就需要从org.apache.lucene.子document 中定义的类Document 继承,定义自己的HTMLDocument 类,然后将之交给org. apache.lucene.index 模块写入索引文件。Lucene 没有规定数据源的格式,只提供 作者简介:苏潭英(1981-),女,硕士研究生,主研方向:数据库全文检索;郭宪勇,高级工程师;金 鑫,硕士研究生 收稿日期:2007-01-10 E-mail :sutanyingwendy@https://www.360docs.net/doc/3a8931948.html,

法规标准库及全文检索系统

法规标准库及全文检索系统 一、产品研发背景 为了使电力企业相关人员更方便的查询到国家、行业发布的各种法律、法规及行业标准,避免企业自己搜索各种文件时,不能保证文件信息、版本的正确性和及时性,提高工作效率。开发法规标准库及全文检索系统。 二、产品特点 内容齐全 由中电方大上传和管理软件数据库中文件,上传文件包括电力行业的法律、法规、行业标准和各企业集团规定,还包含一些对这些法律、法规解读的文章或论文,对法律、法规进行更深层次的挖掘理解。企业在生产、培训时使用该软件可以更方便的查询到需要的文件。 文件实时更新 系统中的文件由中电方大进行管理,对每一个文件的过期或作废等,中电方大都保持实时更新,保持系统的与时俱进,保证文件为实时适用的最新版本。 文件查询方便 文件的查询搜索功能,即能输入文件名或关键字在数据库中全部搜索,又能按照法律、法规、标准或是生效年份等不同条件进行查询搜索。 全文所搜功能 此功能是系统的一大亮点。为了便于查询文件及对应文件内容的搜索,系统支持全文搜索功能。如在搜索界面输入“压力容器”,在结果列表中即会显示相关文件的名称,也会显示部分带有关键字的内容。

三、产品功能 系统支持相关法律法规的全面搜索及预览功能。 四、产品解决问题 系统解决了企业在需要获取相关法规文件时不能确定文件的准确性、最新性等问题。 五、提供的产品服务 ◆提供本产品终身更新服务 ◆提供功能个性化开发服务 六、产品适用范围 产品适用于各类企业 七、公司简介 北京中电方大科技股份有限公司,成立于2004年,新三板挂牌上市公司(证券代码430411,简称:中电方大)。 本公司是处于软件和信息技术服务业的安全与应急服务提供商,为电力企业用户提供安全与应急管理及信息化及对应的整体解决方案。公司于2012年获得国家电监会(现国家能源局)颁发的电力安全生产标准化一级评审机构资质,从事发电企业、电力建设企业的安全生产标准化评审业务。于2014年获得国家能源局指定的电力安全培训机构资质,为发电企业、电网企业相关负责人和安全生

数据库中全文搜索与Like的差别

数据库中全文搜索与Like的差别 在SQL Server中,Like关键字可以实现模糊查询,即确定特定字符串是否与制定模式相匹配。这里的模式可以指包含常规字符和通配符。在模式匹配过程中,常规字符必须与字符串中指定的字符完全匹配。不过通过使用通配符可以改变这个规则,如使用?等通配符可以与字符串的任意部分相匹配。故Like关键字可以在数据库中实现模糊查询。 另外数据库库管理员也可以利用全文搜索功能对SQL Server数据表进行查询。在可以对给定的标进行全文查询之前,数据库管理元必须对这个数据表建立全文索引。全文索引也可以实现类似Like的模糊查询功能。如在一张人才简历表中查找符合特定字符串的信息等等。虽然说Like关键字与全文搜索在功能上大同小异,但是在实现细节上有比较大的差异。作为数据库管理员需要了解这个差异,并选择合适的实现模式。 一、查询效率上的差异。 通常情况下,Like关键字的查询效率还是比较快的。特别是对于结构化的数据,Like的查询效率、灵活性方面是值得称道的。但是对于一些非机构化的文本数据,如果通过Like 关键字来进行模糊查询的话,则其执行效率并不是很理想。特别是对于全文查询来说,其速度要慢得多。而且随着记录数量的增多,类似的差异更明显。如在一张表中,有三百万行左右的文本数据,此时如果利用Like关键字来查找相关的内容,则可能需要几分钟的时间才能够返回正确的结果。相反,对于同样的数据通过采用全文搜索功能的话,则可能只需要1分钟不到甚至更多的时间及可以返回结果。故当文本数据的行数比较多时,如在一万行以上,则此时数据库管理员若采用全文搜索功能的话,则可以比较明显的改善数据库的查询效率。 二、对空格字符的敏感性。 在数据库中如果采用Like关键字进行模糊查询,则在这个关键字后面的所有字符都有意义。如现在用户使用like “abcd ”(带有两个空格)查询时,则后面的空格字符对于Like 关键字也是敏感的。也就是说,如果用户利用上面这条语句进行查询时,则被查询的内容必须也是“abcd ”(带有两个空格)这种类型的数据才会被返回。如果被查询的内容是“abcd ”(不带空格或者带有一个空格)则数据库系统会认为这与查询条件不相符合,故不会返回相关的记录。故Like关键字对于空格是比较敏感的。为此在使用Like关键字时候需要特别注意这个问题。如果用户或者程序开发人员不能够确定abcd后面到底是否有空格,则可以通过通配符拉实现。即可以利用”%abcd%”为条件语句。如此的话,无论abcd前面或者后面是否有空格,则都会被查询出来。但是全文搜索的话,通常情况下系统会把空格忽略掉。即在全文搜索功能中,系统会先对查询条件语句进行优化。如果发现空格的话,则往往会实现把空格过滤掉。故全文搜索的话,对于空格等特殊字符往往是不敏感的。 三、对于一些特殊字符的处理要求。 由于数据类型不同,其数据存储方式也不同。为此某些特殊的数据类型可能无法通过Like关键字来实现模糊查询。如对于办好char和varchar数据的模式的字符串比较可能无法通过Like关键字来实现。也就是说,Like关键字后面带的条件语句仅对字符模式有效,不能够使用Like条件语句来查询格式化的二进制数据等等。为此如果数据库管理元要采用Like 关键字,则其必须了解每种数据类型的存储方式以及导致Like关键字比较失败的原因。知己知彼,百战百胜。只有如此数据库管理员才能够避免因为在不恰当的地方采用了Like关键字而造成查询的错误。不过值得高兴的是,Like关键字支持ASCII模式匹配与Unicode模式匹配。如果Like关键字的所有参数都为ASCII字符数据类型,则Like关键字会自动采用ASCII 模式匹配。如果其中任何一个参数为Unicode数据类型,则系统会把所有的参数都转换为Unicode数据类型,并执行Unicode模式匹配。另外需要注意的是,如果Like关键字加上Unicode的数据类型则后面条件语句的空格是有效的,即比较时会考虑到后面出现的空格。

全文检索系统整体方案

1全文检索系统方案 1.1全文检索需求 1)系统提供模糊检索、分类搜索、高级复合搜索、全文检索、图片内容 检索、跨库检索等多种检索途径; 2)支持字索引和词索引; 3)检索条件具有完整的关键词布尔逻辑运算AND、OR、NOT能力,支持 复合式布尔逻辑运算查询,并且可以配合多组左括号"("与右括号")"作 关键词查询优先级的设置; 4)提供用户多次递进查询的功能,用户可根据上一次查询关键词得到的 检索结果集,增加查询关键词与缩小搜索日期范围,而得到更准确的 查询结果集; 5)能够支持对以上文件中的中文(简体/繁体)、英文、日语、韩语内容 实现关键字检索; 6)支持对Word、TXT、PDF等多种主流文档格式全文检索,并提供开发 接口以支持特殊文档格式的全文检索; 7)在数据源数据发生更新时,能在索引库中反映出来,保证搜索的信息 为最新,即支持增量索引机制; 8)用户可自行设定时间,让系统自动定时进行更新索引; 9)对于百万级记录数的搜索以及结合模糊搜索等查询方式,搜索时间不 得超过10秒; 10)提供跨数据源、数据格式的搜索;

11)同过相关性搜索,能够把和搜索条件相关联的信息搜索出来; 12)不但能够对图片的描述信息进行搜索,还能对图片内容的检索; 13)提供COM与SOAP的搜索接口(Interface) 可让其它应用程序或查询网 页能够提供用户查询入口和查询结果的呈现,用户可通过应用程序或 浏览器访问全文检索服务器,提交查询条件,可在浏览器中查看检索 结果; 14)查询结果集中应包含结果集总数、命中的结果文件的完整路径,以及 符合关键词出现的内容片断; 15)在搜索结果集中,关键词应被标识出来,用特殊的字体及颜色和其他 文字进行区别,查询者可在查询结果片断中一目了然的看到关键词出 现的位置; 16)查询结果可按照关键词命中次数,命中结果文件的修改时间,大小等 条件进行排序; 17)可提供用户对检索命中结果文件在索引库中进行标记,从而再次检索 时,不在标记过的文件中进行查询; 1.2全文检索系统总体方案 系统将采用以下全文检索流程。

全文检索功能

在应用中加入全文检索功能 ——基于java的全文索引引擎lucene简介 作者:车东 email: https://www.360docs.net/doc/3a8931948.html,/https://www.360docs.net/doc/3a8931948.html, 写于:2002/08 最后更新: 版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明 https://www.360docs.net/doc/3a8931948.html,/tech/lucene.html 关键词:lucene java full-text search engine chinese word segment 内容摘要: lucene是一个基于java的全文索引工具包。 1.基于java的全文索引引擎lucene简介:关于作者和lucene的历史 2.全文检索的实现:luene全文索引和数据库索引的比较 3.中文切分词机制简介:基于词库和自动切分词算法的比较 4.具体的安装和使用简介:系统结构介绍和演示 5.hacking lucene:简化的查询分析器,删除的实现,定制的排序,应用接口的扩展 6.从lucene我们还可以学到什么 基于java的全文索引/检索引擎——lucene lucene不是一个完整的全文索引应用,而是是一个用java写的全文索引引擎工具包,它可以方便的嵌入到各种应用中实现针对应用的全文索引/检索功能。 lucene的作者:lucene的贡献者doug cutting是一位资深全文索引/检索专家,曾经是v-twin搜索引擎(apple的copland操作系统的成就之一)的主要开发者,后在excite担任高级系统架构设计师,目前从事于一些internet底层架构的研究。他贡献出的lucene的目标是为各种中小型应用程序加入全文检索功能。 lucene的发展历程:早先发布在作者自己的https://www.360docs.net/doc/3a8931948.html,,后来发布在sourceforge,2001年年底成为apache基金会jakarta的一个子项目:https://www.360docs.net/doc/3a8931948.html,/lucene/ 已经有很多java项目都使用了lucene作为其后台的全文索引引擎,比较著名的有: ?jive:web论坛系统; ?eyebrows:邮件列表html归档/浏览/查询系统,本文的主要参考文档“thelucene search engine: powerful, flexible, and free”作者就是eyebrows系统的主要开发者之一,而eyebrows已 经成为目前apache项目的主要邮件列表归档系统。 ?cocoon:基于xml的web发布框架,全文检索部分使用了lucene ?eclipse:基于java的开放开发平台,帮助部分的全文索引使用了lucene

英文数据库,全文检索 文档

四)利用英文全文数据库——Elsevier,Springer,EBSCO(BSP/ASP) 1、检索课题名称:探析公益广告中的商业元素 2、课题分析: 中文关键词为:公益广告,商业元素 英文关键词为:PSAs Commercial elements Business Elements 3、选择检索工具:Elsevier 数据库,Springer数据库,EBSCO(BSP/ASP)数据库。 4、构建检索策略:Commercial elements and the public service ads 5、简述检索过程: ①,选定在Elsevier 中期刊、图书、文摘数据库等全部文献资源中检索2000 年以后的关于公益广告中的商业元素的文献 利用确定的检索策略(Commercial elements and the public service ads ),文献全文(含文献题目、摘要、关键词)中检索,检到184 篇相关文献。 ②,选定在Springer 中期刊、图书、文摘数据库等全部文献资源中检索2000 年以后的关于公益广告中的商业元素的文献 利用确定的检索策略(Commercial elements and the public service ads ),文献全文(含文献题目、摘要、关键词)中检索,检到64篇相关文献。③,选定在EBSCO(BSP/ASP)中期刊、图书、文摘数据库等全部文献资源中检索2000 年以后的关于公益广告中的商业元素的文献 利用确定的检索策略(Commercial elements and the public service ads ),文献全文(含文献题目、摘要、关键词)中检索,检到381篇相关文献。 6、整理检索结果: 从以上文献中选择出3 条切题文献 ①、Constructing female identities through feminine hygiene TV commercials M a Milagros Del Saz-Rubio a, , and Barry Pennock-Speck b, [Author vitae] a Universidad Politécnica de Valencia, Camino de Vera s/n 46022, Valencia, Spain b Universitat de València, Avenida Blasco Ibá?ez 32, 46010, València, Spain Received 9 July 2008; revised 10 January 2009; accepted 18 April 2009. Available online 3 June 2009. In this paper we report the results of a qualitative multimodal analysis of a corpus of Spanish and British TV ads featuring female hygiene products such as tampons, liners and sanitary towels/pads. We contend that advertisers of menstruation-related products employ a wide range of strategies to convey both overt information about the products advertised, as well as to –and more importantly –indirectly transmit stereotypical beliefs of women which inevitably helps reproduce and sometimes perpetuate a gender-biased type of discourse (Holmes and Marra, 2005). Crook's (2004) distinction between the product-claim and the reward dimension in ads has been taken as the starting point for our analysis. Within the product-claim dimension we have focused on what information is transmitted through the application of some of Brown and Levinson's (1987) generic positive and off-record politeness strategies. On the other hand, within the reward dimension attention is shifted to how information surfaces the language in an indirect fashion through attention to different format types, visual imagery, voices and music. Results indicate that ads either tend

如何用C#实现数据库全文检索

如何用C#实现数据库全文检索 目前行业网站的全文检索的方式主要有两种 方式一:通过数据库自带的全文索引 方式二:通过程序来自建全文索引系统 以Sql Server 2005为例 2005本身就自带全文索引功能,你可以先对数据库表建立索引,具体如何建索引网上搜索一下,建立完索引之后,你就可以用SQL来实现检索功能,例如:select * from ytbxw where contaiins(字段,' 中国');多个查询值之间可以用and 或or来实现,在单表以及单表视图上建全文索引对2005来说根本不是问题,但在多表视图建全文索引2005目前还无法实现这个功能,拿https://www.360docs.net/doc/3a8931948.html,为例,其每个栏目的信息都是分开存放的,所以在检索上就无法用该方法来解决这个问题. 下面重点说一下如何用程序来实现检索功能 如果你想自己开发一个全文检索系统,我想这是相当复杂事情,要想实现也不是那么容易的事情,所以在这里我推荐一套开源程序,那就是 DotLucene,我想大家可能都听过这个东东吧,那我就讲讲如何来实现多表情况下的全文检索. 1、新建winform项目,把https://www.360docs.net/doc/3a8931948.html,.dll添加到该项目中来 2、创建一个类,类名可以自己取 public class Indexer { private IndexWriter writer; //在指定路径下创建索引文件 public Indexer(string directory) { writer = new IndexWriter(directory, new StandardAnalyzer(), true); writer.SetUseCompoundFile(true); }

全文检索需求及选型

全文检索需求 档案管理系统 需求整理 1、一个文档有多个附件; 2、文档支持格式:pdf,CEB,txt,html,office(world、excel)、wps 文档,tf、tff; Ceb格式,目前在档案系统已经存在一个对应的txt文件; 现在有两种方案来处理ceb格式:一是把档案系统中的ceb对应的txt文件,迁移过来;二是ceb文件重新转换一次。 3、权限管理,权限有个人、角色、部门分类; 4、检索的内容包括,结构化数据和非结构化数据;可以支持定制查询;可以分多个字段查询(比如:档案类型、查询年份) 5、准确显示摘要和高亮显示; 6、矩阵分析(智能分析相似文档,数据挖掘的一部分); 档案的现在方案 a)使用lucene2.x 版本; b)系统是二级部署;

c)每个网点比如福建,按地市创建索引文件。每个地市的索引文 件的大小在800M左右,这样单个档案系统的一个网点的索引 总大小应该在10G左右(目前的大小)。 d)每个地市只可以单独查询,目前没有实现合并查询。 e)新建索引和增量索引是分开处理的。 f)权限控制,目前是用户在请求单个文档的时候才验证权限;在 索引和检索两个层次上没有做控制。 其他特点 知识管理系统 需求整理 1、目前是一个文档对应一个附件,但以后有可能支持多个附件; 文档支持格式:知识管理中各种文档都会存在,尽量支持大部分数据格式。 2、支持的格式可以灵活扩展。 3、权限管理,权限有个人、角色、组织、部门等层次; 4、检索的内容包括,结构化数据和非结构化数据;可以支持定制查询; 5、准确显示摘要和高亮显示; 6、智能分析(相似文档,数据挖掘的一部分);

自然语言处理技术在中文全文检索中的应用

3本文为国家社会科学基金项目“基于中文X ML 文档的全文检索研究”的成果之一,项目编号:04CT Q005。 ●熊回香,夏立新(华中师范大学 信息管理系,湖北 武汉 430079) 自然语言处理技术在中文全文检索中的应用 3 摘 要:自然语言处理技术是中文全文检索的基础。首先介绍了全文检索技术及自然语言处理技术,接着详细地阐述了自然语言处理技术在中文全文检索中的应用,并对目前基于自然语言处理技术的中文全 文检索技术的局限性进行了分析,探讨了中文全文检索技术的未来发展方向。 关键词:自然语言处理;全文检索;智能检索 Abstract:Natural language p r ocessing technol ogy is the basis of Chinese full 2text retrieval .This paper firstly intr oduces the full 2text retrieval technol ogy and natural language p r ocessing technol ogy .Then,it gives a detailed 2descri p ti on of the app licati on of natural language p r ocessing technol ogy in Chinese full 2text retrieval .The p resent li m itati ons of the Chinese full 2text retrieval system based on natural language p r ocessing technol ogy is als o ana 2lyzed .Finally,the paper exp l ores the devel opment trend of Chinese full 2text retrieval technol ogy in future . Keywords:natural language p r ocessing;full text retrieval;intelligent retrieval 随着社会网络化、信息化程度的日益提高,网上信息呈指数级剧增,人们越来越强烈地希望用自然语言同计算机交流,并能方便、快捷、准确地从互联网上获得有价值的信息,因此,自然语言处理技术和中文全文检索技术成为当今计算机科界、语言学界、情报学界共同关注的课题,并共同致力于将自然语言处理技术的研究成果充分运用到全文检索中,从而促进了全文检索技术的发展。 1 全文检索技术 全文检索是一种面向全文和提供全文的检索技术,其核心技术是将文档中所有基本元素的出现信息记录到索引库中,检索时允许用户采用自然语言表达其检索需求,并借助截词、邻词等匹配方法直接查阅文献原文信息,最后将检索结果按相关度排序返回给用户。因而索引数据库的建立是全文检索系统实现的基础,它以特定的结构存储了数据资源的全文信息,从而为全文检索系统提供可检索的数据对象。在中文全文检索系统中,建立索引库的前提是运用自然语言处理技术对中文信息进行基于词(字)、句、段落等更深层次的处理。 2 自然语言处理技术 自然语言是指作者所使用的书面用语,在信息检索中包括关键词、自由词和出现在文献题名、摘要、正文或参 考文献中的具有一定实质意义的词语[1]。自然语言处理 (Natural Language Pr ocessing,NLP )是语言信息处理的一 个重要分支,在我国就是中文信息处理。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法,具体来说就是用计算机对包括汉语(字)的形、音、义等信息及词、句子、篇章的输入、输出、存储和识别、分析、理解、生成等多方面的加工处理[2]。由于自然语言处理侧重于词、句子、篇章,因而词法分析、句法分析、语义分析、语用分析、语境分析便构成了自然语言处理研究内容的基础部分。 211 词法分析 词法分析包括词形和词汇两个层次,其中词形主要是对各种词形和词的可识别部分的处理。如前缀、后缀及复合词的分析;词汇的重点在于复合对词操作和词汇系统的控制。其主要目的是有助于确认词性以及做到部分理解词与词、词与文档之间的关系,提高检索的效率。由于计算机内部存储的中文信息没有明显的词与词之间的分隔符,因此,在中文全文检索系统中,词法分析首要任务之一是对文本信息进行词语切分,即汉语自动分词,汉语自动分词是中文信息处理中的关键技术,也是中文全文检索的瓶颈,只有对汉语词进行正确的切分后,才能准确地提取文献的特征信息,对文献进行正确标引,才能正确分析用户的查询意图,为用户提供准确的信息服务。 212 句法分析 句法分析是对句子中词汇短语进行分析以便揭示句子的语法结构。目的是通过对句型结构的分析,自动抽取复

NC65全文检索配置方法说明文档

全文检索(NC65版本) NC65全文检索的配置和使用需要3步,具体如下: 一.在第一次启动环境,或要改变服务器结构,比如从单机改为集群,在服务停止时需要删除Nchome下anteindex文件夹。如果没有这个文件夹,不需要进行这一步。如果搜索不能正常工作,也可以通过在停服务时删除这个文件夹,重启集群服务器,尝试解决搜索的出现的相关问题。在其他正常情况下,服务器的停止和重启,不需要删除anteindex文件夹。 二.数据源配置。搜索需要在配置界面中,指定可以进行搜索服务的数据源。 点击Nchome\bin\sysconfig.bat,会出现以下界面。 在NC63中,我们使用的是档案索引这个页签的配置,到了NC65,配置移到了搜索引擎下。如上图所示,在【搜索引擎】的【搜索源分组】页签下,选择要提供搜索的表,比如bd_material_table物料表,点击设置数据源按钮,在弹框中勾选要提供服务的数据源,点击确定。每一张要提供搜索服务的表都需要设置数据源,如果客户不知道哪些要用哪些不要用,就请为每一张表都配置数据源。数据源配置完成后点击保存按钮。 搜索的数据源配置只需要进行一次。如果要更改数据源,就需要重新配置。 三.建立索引。

在第一次使用搜索服务,或者因为上文提到的某种原因删除anteindex后,需要手动一键重建索引。 一键手动重建索引需要在服务器完全启动后,也就是说客户端可以正常登录的时候,才能进行。(删anteindex文件夹需要在停服务时进行,一键重建索引需要在服务器完全启动时进行)。如下图所示: 在【搜索引擎】的【搜索管理】页签,在服务器完全启动后点击重爬全部按钮,只需要点一次,一两分钟后,搜索服务就可以正常使用了,也不需要点击保存按钮。如果不是第一次使用搜索服务,或者没有删除anteindex 文件夹,正常的服务停止和重启不需要再点击重爬全部按钮。 图中大红框选中的是,可以为每一张表设置更新的频率,比如一天更新一次,又或者每隔一段时间周期性的更新。这是索引更新的补偿机制,用户在前台操作的时候,对数据进行增添删改,索引会实时自动更新。所以这个补偿机制也可以不进行关注。 全文检索不能生效的常见问题解答? a、检查数据源配置的是否正确。项目上出现过配置为其他数据源或者修改数据源名称后,没有同步修改此处的数据源的现象。后续这一块有望实现自动配置正确的数据源。

全文检索工具

通过从互联网上提取的各个网站的信息(以网页文字为主)而建立的数据库中,检索与用户查询条件匹配的相关记录,然后按一定的排列顺序将结果返回给用户。 尤其是中文全文检索技术的研究始于1987年左右,已经有一些商品化的软件。Internet 的普及使得全文检索技术日益成熟起来,其应用已突破传统的情报部门和信息中心的局限性,使该技术的最广大用户变成互联网的用户和桌面用户,而不再仅局限于情报检索专家。 全文检索技术以各类数据如文本、声音、图像等为对象,提供按数据的内容而不是外在特征来进行的信息检索,其特点是能对海量的数据进行有效管理和快速检索。它是搜索引擎的核心技术,同时也是电子商务网站的支撑技术。全文检索技术可应用于企业信息网站、媒体网站、政府站点、商业网站、数字图书馆和搜索引擎中。我们知道,企业信息化是电子商务的基础,企业建立自己的商务站点,构建企业内部信息发布平台,并与其他网站间建立安全的信息发布通道和交换通道,建立电子商务的应用并以数据为中心建立应用平台等方面都离不开全文检索。该检索技术可跨越所有的数据源,支持多种数据和信息格式,对检索结果可按商业分类规则进行排列,也能满足用户特定的知识检索请求,将所有不同信息查询中的命中结果按相关性或分类排列,提供不同格式的信息浏览功能。 [1] 从搜索结果来源的角度,全文搜索工具又可细分为两种,一种是拥有自己的检索程序(Indexer),俗称“蜘蛛”(Spider)程序或“机器人”(Robot)程序,并自建网页数据库,搜索结果直接从自身的数据库中调用,如Google、Fast/AllThe Web、AltaVista、Inktomi、Teoma、WiseNut、百度等;另一种则是租用其他引擎的数据库,并按自定的格式排列搜索结果,如Lycos引擎。 “网络机器人”或“网络蜘蛛”是一种网络上的软件,它遍历Web空间,能够扫描一定IP地址范围内的网站,并沿着网络上的链接从一个网页到另一个网页,从一个网站到

整合全文检索系统解决方案

用友知识管理检索系统解决方案 维思比科技(北京)有限公司 2010年4月20日

目录 (一)现状及总体目标 (1) 1.1、背景介绍 (1) 1.2、现状 (1) 1.3、总体目标 (1) 1.4 总体设计 (2) 1.4.1 系统结构图 (3) 1.4.2信息采集工作原理 (3) 1.4.2.1 数据采集 (3) 1.4.2.2 数据分析 (5) 1.4.2.3 数据写入 (5) (二)功能及界面设计 (5) 2.1整合搜索 (6) 2.1.1拼音提示.............................................................................. 错误!未定义书签。 2.1.2拼音纠错 (7) 2.1.3 相关推荐 (7) 2.1.4 多维度智能导航 (7) 2.1.5 二次检索 (7) 2.1.6 精确查询与模糊查询 (7) 2.1.7多维度排序 (7) 2.2 硬件配置 (7) 2.7.1 服务器配置 (7) 2.7.2 网络带宽配置 (8) 2.7.3 软件配置 (8) (三)开发进度安排 (8) 3.1 实施流程 (8) 3.2 实施进度 (8) (四)投资概算 (9) 4.1 软件产品 (9) 4.2 定制开发 (9) 4.3 培训费用 (9) 4.4 总体预算 (9) (五)运行维护和培训 (12) 5.1 维护 (10) 5.2 培训 (11) 5.2.1.培训人员 (11) 5.2.2.培训目标 (12) 5.2.3. 培训内容 (12) 5.2.4. 培训方式 (12) 5.2.5. 培训时间 (12) (六) 附录 (13)

三大中文期刊全文数据库的比较

三大中文期刊全文数据库的比较研究 摘要从论文收录情况、检索功能、检索结果、检索界面、用户服务等五个方面对国内三种期刊全文数据库——《中国期刊网全文数据库》、《维普中文科技期刊数据库》和《万方数据资源系统数字化期刊》进行了比较与分析,力图对图书情报机构在数据库选择方面有所指导,同时,对读者有针对性地使用这些数据库有所帮助。 关键词中国期刊网全文数据库维普中文科技期刊数据库万方数据资源系统数字化期刊全文数据库比较电子期刊 《中国期刊网全文数据库》、《维普中文科技期刊数据库》和《万方数据库资源系统数字化期刊》是国内影响力和利用率很高的综合性中文电子期刊全文数据库,这三个数据库已经成为大多数高等院校、公共图书馆和科研机构文献信息保障系统的重要组成部分。在互联网中,这三大数据库也成为中文学术信息的重要代表,体现了我国现有的中文电子文献数据库的建设水平。 笔者结合工作和学习中的实践,就上述三大数据库的收录情况、检索功能、检索结果、检索界面、用户服务等方面进行全面的比较,并通过检索实践举例进行比较分析,以供参考。 1 收录情况 收录范围与数量 《中国期刊网全文数据库》(本文中简称“清华”)是由清华同方光盘股份有限公司、光盘国家工程研究中心和中国学术期刊(光盘版)电子杂志社共同研制出版的综合性全文数据库。该数据库收录自从1994年来公开出版发行的6600余种国内核心期刊和一些具有专业特色的中英文期刊全文,累积全文文献618万多篇(最新数据大于1600万篇),题录1500万余条,按学科分为理工A(数理科学)、理工B(化学化工能源与材料)、理工C(工业技术)、农业、医药卫生、文史哲、经济政治与法律、教育与社会科学、电子技术与信息科学九大类,126个专题文献数据库。 《中文科技期刊数据库》(本文中简称“维普”)由科技部西南信息中心主办,重庆维普资讯有限公司制作。其前身为《中文科技期刊篇名数据库》。该数据库收录了自1989年以来国内出版发行的12000种期刊,其中全文收录8000余种,按学科分为经济管理、教育科学、图书情报、自然科学、农业科学、医药卫生、工程技术等7大类,27个专辑,200个专题,按《中图法》编制了树型分类导航和刊名导航系统,基本覆盖了国内公开出版的具有学术价值的期刊,同时还收录了中国港台地区出版的108种学术期刊,积累700余万篇全文文献(最新数据大于1300万篇),数据量以每年100万篇的速度递增。 《万方数据资源系统数字化期刊》(本文中简称“万方”)是万方数据库资源系统三大组成部分之一,由中国科技信息研究所属下的北京万方数据股份有限公司创办。万方期刊收录了我国自然科学的大量期刊以及社会科学的部分期刊,范围包括基础科学、医药卫生、农业科学、

全文检索系统整体方案

1 全文检索系统方案 5.1 全文检索需求 1)系统提供模糊检索、分类搜索、高级复合搜索、全文检索、图片内容检 索、跨库检索等多种检索途径; 2)支持字索引和词索引; 3)检索条件具有完整的关键词布尔逻辑运算AND、OR、NOT能力,支持复 合式布尔逻辑运算查询,并且可以配合多组左括号"("与右括号")"作关 键词查询优先级的设置; 4)提供用户多次递进查询的功能,用户可根据上一次查询关键词得到的检 索结果集,增加查询关键词与缩小搜索日期范围,而得到更准确的查询 结果集; 5)能够支持对以上文件中的中文(简体/繁体)、英文、日语、韩语内容实 现关键字检索; 6)支持对Word、TXT、PDF等多种主流文档格式全文检索,并提供开发接 口以支持特殊文档格式的全文检索; 7)在数据源数据发生更新时,能在索引库中反映出来,保证搜索的信息为 最新,即支持增量索引机制; 8)用户可自行设定时间,让系统自动定时进行更新索引; 9)对于百万级记录数的搜索以及结合模糊搜索等查询方式,搜索时间不得 超过10秒; 10)提供跨数据源、数据格式的搜索; 11)同过相关性搜索,能够把和搜索条件相关联的信息搜索出来; 12)不但能够对图片的描述信息进行搜索,还能对图片内容的检索; 13)提供COM与SOAP的搜索接口(Interface) 可让其它应用程序或查询网页 能够提供用户查询入口和查询结果的呈现,用户可通过应用程序或浏览 器访问全文检索服务器,提交查询条件,可在浏览器中查看检索结果; 14)查询结果集中应包含结果集总数、命中的结果文件的完整路径,以及符 合关键词出现的内容片断; 15)在搜索结果集中,关键词应被标识出来,用特殊的字体及颜色和其他文 字进行区别,查询者可在查询结果片断中一目了然的看到关键词出现的 位置; 16)查询结果可按照关键词命中次数,命中结果文件的修改时间,大小等条 件进行排序; 17)可提供用户对检索命中结果文件在索引库中进行标记,从而再次检索 时,不在标记过的文件中进行查询;

全文检索原理

全?文检索 我们?生活中的数据总体分为两种:结构化数据和?非结构化数据。 ?结构化数据:指具有固定格式或有限长度的数据,如数据库,元数据 等。 ??非结构化数据:指不定长或?无固定格式的数据,如邮件,word?文档等。当然有的地?方还会提到第三种,半结构化数据,如XML,HTML等,当根据需要可按结构化数据来处理,也可抽取出纯?文本按?非结构化数据来处理。 ?非结构化数据又?一种叫法叫全?文数据。 按照数据的分类,搜索也分为两种: ?对结构化数据的搜索:如对数据库的搜索,?用SQL语句。再如对元数据 的搜索,如利?用windows搜索对?文件名,类型,修改时间进?行搜索等。 ?对?非结构化数据的搜索:如利?用windows的搜索也可以搜索?文件内容,Linux下的grep命令,再如?用Google和百度可以搜索?大量内容数据。 对?非结构化数据也即对全?文数据的搜索主要有两种?方法: ?一种是顺序扫描法(Serial Scanning):所谓顺序扫描,?比如要找内容包含某?一个字符串的?文件,就是?一个?文档?一个?文档的看,对于每?一个?文档,从头看到尾,如果此?文档包含此字符串,则此?文档为我们要找的?文件,接着看下?一个?文件,直到扫描完所有的?文件。如利?用windows的搜索也可以搜索?文件内容,只是相当的慢。如果你有?一个80G硬盘,如果想在上?面找到?一个内容包含某字符串的?文件,不花他?几个?小时,怕是做不到。Linux下的grep命令也是这?一种?方式。?大家可能觉得这种?方法?比较原始,但对于?小数据量的?文件,这种?方法还是最直接,最?方便的。但是对于?大量的?文件,这种?方法就很慢了。 有?人可能会说,对?非结构化数据顺序扫描很慢,对结构化数据的搜索却相对较快(由于结构化数据有?一定的结构可以采取?一定的搜索算法加快速度),那么把我们的?非结构化数据想办法弄得有?一定结构不就?行了吗? 这种想法很天然,却构成了全?文检索的基本思路,也即将?非结构化数据中的?一部分信息提取出来,重新组织,使其变得有?一定结构,然后对此有?一定结构的数据进?行搜索,从?而达到搜索相对较快的?目的。 这部分从?非结构化数据中提取出的然后重新组织的信息,我们称之索引。 这种说法?比较抽象,举?几个例?子就很容易明?白,?比如字典,字典的拼?音表和部?首检字表就相当于字典的索引,对每?一个字的解释是?非结构化的,如果字典没有?音节表和部?首检字表,在茫茫辞海中找?一个字只能顺序扫描。然?而字的某些信息可以提取出来进?行结构化处理,?比如读?音,就?比较结构化,分声母和韵母,分别只有?几种可以?一?一列举,于是将读?音拿出来按?一定的顺序排列,每?一项读?音都指向此字的详细解释的页数。我们搜索时按结构化的拼?音搜到读?音,然后按其指向的页数,便可找到我们的?非结构化数据——也即对字的解释。

相关文档
最新文档