开篇:润墨网以专业的文秘视角,为您筛选了八篇全文检索范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!
【关键词】全文检索;搜索引擎;提取主题词
引言
信息的迅速增长必然需要强大的信息检索工具,而在信息检索工具中,全文检索是最具有通用性和实用性的。迅速发展的互联网带来的信息增长对全文检索技术又提出了新的要求。由此可见全文检索系统的研究对人们日常生活的意义与重要性,能准确地从web数据中查找用户需要的信息、并以有效的形式呈现给用户的问题势在必行。
1.主题词提取关键技术
主题词提取算法设计时要保证提取的主题词能反映文档的主旨内容。因此,采用了全新的主题词提取算法:基于同义词词林的主题词提取。
1.1主题词词频与词语位置
词语在文献中出现的次数越多,它越可能是主题词。词语在文献中出现的位置对主题词提取也具有重要的影响,一般来说,词语会出现在标题、正文等不同的位置。出现在正文的词语,设它的位置loci=1;出现在标题的词语,设它的位置值为loci=0。出现在标题中的词语往往就比出现在正文中的词语重要。
1.2同义词权值设计
如果一个词语的同义词在文中出现,那么这个词语获得附加权重。判断文章中词语是否有同义词,主要的依据是在同义词词林字典中进行查找,如果这个词语及同义词在文中都有出现,那么同义词词林中一定有“=”号标记,标记该词与该词相关的同义词。则将这个词的权重(weight)增加;如果一个词的相关词语出现在文中,那么这个词也获得附加权重,在同义词词库中是以“#”作为相关词标记的。如果文章中的一个词既没有同义词也没有相关词出现,那么它很有可能是独立词,只需要判断该词的TF值就可以了。
2.主题词提取算法
虽然目前很多研究者都采用了像TF-IDF等算法计算主题词权重,但这种算法不属于单文档主题词提取算法,而且没有考虑词语的其他相关信息对主题词权值判定的影响。在设计主题词提取算法时考虑了设计词语权重时的因素:文本中词语的词频、词语出现的位置、同义词、相关词、独立词。设计权重算法如下:
(1)
首先,Wj是判断一个词是否能作为主题词提取的唯一权重,Wj的值越高越可能是主题词。第一个因子与第二个因子分别计算了词频和词语的相关位置,位置因子算法中第一个fi为词语在文中第i种位置上出现的次数。在标题中出现的词,权重往往比在正文中出现的词语权重大。Loci为该词语的位置因子,Loci=0时,该词出现的位置是标题,则λ值为0.6。如果Loci=1,说明这个词的位置在正文,则λ值为0.3。第二项是参考了同义词词林设计的因子,h是这个词语的相关同义词种类。同义词相关种类指的是同义词、相关词、独立词这三种。kind为基于同义词相关信息的相关因子,kind有三种形式,当文章中这个词有同义词出现时kind值为1,相关词出现时kind值为0.6,没有任何同义词和相关词时该词kind值不增加。计算出所有词的权重后,输出链表中权重最大的前N个词,作为文章的主题词。在这个过程中,设置了可以提取主题词个数是3至6个。
3. 主题词提取模块
3.1分词模块
分词模块处理时:首先设置了一个函数,作为分词时的预处理。所谓预处理即是对一个待分词文档,判断其要匹配的字段是否含有非中文字符。如果没有则调用正向或者反向最大匹配分词法。如果这个匹配字段中含有非中文字字符,那么在处理时先将char设置为unsigned char类型,存储几乎所有的字符文字。首先用户选择载入文件打开待分词文档。按下正向最大匹配分词OnSplitBack()按钮或者反向最大匹配分词OnSplitFront()按钮,调用事件处理函数开始进行中文分词。载入词库文件以后,进入SplitWord函数。它是分词的开始,bDick参数是用户选择的分词方式。bDick =1 则进行正向最大匹配分词,bDick=2则进行反向最大匹配分词。如果按下正向最大匹配分词按钮,则进入MaxFrontMatching()函数,进行正向最大匹配。如果按下反向最大匹配分词按钮,则进入MaxFrontMatching()函数,进行反向匹配。通过反复的调用这个函数,最终完成中文分词。
3.2主题词提取模块
在设计主题词权重算法时,参考了主题词提取算法的相关资料,设计了影响词语权重的因子:即该词词频、词语出现的位置、同义词、相关词、独立词。根据主题词提取权重算法,Weight作为判断一个词是否能作为关键词提取的唯一权重。进入函数Count_loc判断该词语在文本中的词频,统计文章中每个词的词频之后调用位置函数WordPosition判断词语出现的位置。如果该词出现在正文,那么loci值1。如果该词语出现的位置是标题,那么loci的值为0。将m_WordList链表里的文章标题中出现的词汇nPos标志改为0之后,统计链表中m_WordList的词汇,放到同义词匹配词库中进行查找,将找到的标记(#=&)记录到address对象中去。调用CountThesaurus函数,判断当前文章中该词语是否有同义词。如果有那么它的权值加1。该词存在相关词时权值增加0.6,如果它是独立词则该词的权值不增加。在主题词提取设计中用户可以根据自己的需要选择提取主题词个数。
3.3搜索引擎模块
搜索引擎在设计时直接调用了现有的基于Google接口的搜索引擎程序,将这段程序代码与主题词提取代码整合到一起,完成了基于搜索引擎的主题词提取系统,在程序调用时直接调用了Google接口程序的.exe文件。当按下OnSearchEngine按钮时首先判断主题词提取对象是否为空,如果主题词提取为空将不能向用户显示搜索引擎搜索到的结果。
总结
在设计全文检索主题词算法初期采用了TF算法统计了文本中的词频,最终主题词提取的部分借鉴了同义词词林算法,中文分词部分主要采用正向最大匹配分词法与反向最大匹配法相结合的算法进行中文分词。通过中文分词程序设计中算法的不断改进、调整,最终将这两种不同的中文分词法结合到一起。同时,本系统还有可以一些需要改进的地方,比如提高主题词提取的准确性。更快更准永远是全文检索技术的追求。
参考文献
[1]张军华,韩全会.中文五大综合搜索引擎主要性能测评[J].情报科学,2008,9:1-4
〔关键词〕Lucene 全文检索 搜索引擎
〔分类号〕TP393.07
Design and Implementation of a Website Full-text Retrieval System Based on Lucene
Cao Qiang
Library of Center for Chinese and American Studies, Nanjing University, Nanjing210093
〔Abstract〕The paper designs a full-text retrieval system based on Lucene which can be employed in websites, elaborates on the design methods and the structure of the system, and presents major codes of key technologies such as segmentation of Chinese words, adding index to documents, etc. The paper also gives the results of system benchmark testing and comparing with the current universal search engine in aspects of recall and precision ratio.
〔Keywords〕Lucenefull-text retrievalsearch engine
1引言
对于Web站点来说,一个优秀的站内全文检索系统是不可或缺的。通常有两种方法:①使用通用的桌面搜索引擎如Google等提供的站内搜索功能来检索站点内部数据;②开发自己专用的站内全文检索系统。由于通用搜索引擎的索引更新较慢且针对性不强,因而第一种方法的检索结果有可能不全,还容易出现“坏链接”,查全率和查准率都难以保证。所以对于数据更新较快的站点来说,一般采用的是第二种方法。开发自己专用的站内全文检索系统。
目前大多数的web站点都是采用“后台数据库管理系统+前台活动页面”的模式构建,因而对于站内信息的检索,最直接的办法就是采用数据库管理系统自带的查询命令(如:like ‘%keyword%’等)来实现检索功能。但是由于这种模糊查询并非基于索引,而是需要实时地遍历整个数据库纪录中的文本字段进行匹配,因此其效率十分低下。当数据量很大的时候,系统对查询的响应速度会越来越慢以至于让人无法忍受。即使采用数据库索引,但是目前数据库的索引不是为文档的全文检索而设计的,因此其效率仍旧不高。
此外,对于少数未采用动态页面和数据库技术的站点来说,其采用的文档格式,如文本文档、word文档、PDF文档、HTML文档,等等,并不像数据库文档那样具备完整的查询功能。如何对这部分文档实现检索,也是一个难题。
由上所述,如何构建一个效率较高、针对性较强的通用型Web站点全文检索系统,是一个亟待解决的问题。笔者使用开放性的检索平台Lucene进行二次开发,设计了一个全文检索系统,较为圆满地解决了这个问题。
2关于Lucene
2.1Lucene简介
Lucene是一个基于Java的全文信息检索工具包,它不是一个完整的搜索应用程序,而是为应用程序提供索引和搜索功能。Lucene目前是Apache公司的一个开源项目,也是目前最为流行的基于Java的开源全文检索工具包[1]。
Lucene的检索本质上仍属于索引检索,即用空间来换取时间,对需要检索的文件、字符流进行全文索引,在检索的时候对索引进行快速的检索,得到检索位置,这个位置记录检索词出现的文件路径或者某个关键词。
2.2选择Lucene的原因
目前大部分的数据库引擎都是用B树结构来维护索引,索引的更新会导致大量的I/O操作,Lucene在实现中对此稍微有所改进:不是维护一个索引文件,而是在扩展索引时不断创建新的索引文件,然后定期地将这些新的小索引文件合并到原先的大索引中(针对不同的更新策略,批次的大小可以调整),这样在不影响检索的效率的前提下,提高了索引的效率。Lucene的索引结构在概念上仍为传统的倒排索引结构[1]。
另外,相对于其它一些全文检索系统,Lucene还有以下优点:①可以进行增量的索引(Append),可以对于大量数据进行批量索引,并且接口设计用于优化批量索引和小批量的增量索引;②Lucene没有定义具体的数据源,数据类型就是Lucene索引文件格式中用到的全部数据类型,由于他们都以字节为基础定义而来,因此保证了与平台无关,这也是Lucene索引文件格式平台无关的主要原因;③Lucene只提供一个通用的结构(Document对象)来接受索引的输入,因此可以非常灵活的适应各种应用,输入的数据源可以是数据库、Word文档、PDF文档和HTML文档等,只要前端有合适的转换器把数据源转换成相应结构就可以进行数据索引了。
综上所述,Lucene具备开放源代码、跨平台、数据源来源广、索引效率高等特性,很适合于用来构建全文检索系统。
3原理与实现技术
3.1系统结构分析
Lucene有两个主要的服务:索引和搜索。索引和搜索的任务是相互独立的。索引和搜索服务都可用,这样开发人员就可以对他们进行扩展来满足自己的需求。文本索引是Lucene重点构造的一个可搜寻的索引区域。索引是为高性能内容查询而创建的知识库。Lucene提供丰富的API,可以与存储在索引中的信息交互。用户可以简单地指定索引作为文档名称列表和它的摘要,也可以复杂地指定索引作为整个文档存储内容和相关的附加元数据。例如可以按附加的元数据信息排队,这样在查询结果中就可以区分出优先级较高的一些文档。同时,Lucene也支持“AND”、“+”、“OR”、“NOT”和“一”作为布尔运算符的查询。Lucene功能强大,但从根本上说,主要包括两块:一是文本内容经分词后索引入库;二是根据查询条件返回结果。(如图所1示,其中最重要的两个模块是查询分析器和语言分析器。)
要使用Lucene实现中英文混合检索,①需要按词法结构来构建相应的词法分析逻辑,实现Lucene在org.apache.lucene.analysis中定义的接口,为Lucene提供目标系统所使用的语言处理能力。Lucene已经实现了英文和德文的简单词法分析逻辑(按照空格分词,并去除常用的stopword(语法词,如英语中的is,am,are,等等)。在这里,主要需要参考实现的接口在org.apache.lucene.analysis中的Analyzer.java和Tokenizer.java的定义,Lucene提供了很多英文规范的实现样本,也可以作为实现时的参考资料。②按照被索引的文件格式来提供相应的文本分析逻辑,这里是指除词法分析之外的部分,比如HTML文件,通常需要把其中的内容按照所属域分门别类加入索引,这就需要从org.apache.lucene.document中定义的类document继承,定义自己的HTMLDocument类,然后就可以交给org.apache.lucene.index模块来写入索引文件。完成了这两步之后,Lucene全文检索引擎就基本上完备了。
3.2Lucene的中英文分词
由于语言特性(具备自然分隔符),英文分词比较简单。Lucene自带的StopAnalyzer模块,可以去除stopword,而且可以不区分大小写,过滤掉各类标点符号和语法词,足够满足一般检索需要[2]。
对于中文分词,新的Lucene1.9版本也提供了Standard-Analyzer中文分词接口,不过它所采用的是基于单字的一元切分法。这种分词方法虽然简单实用而且不会损失任何索引信息,但同时也会产生许多无用索引,其直接后果就是用户在最初的几个返回页面中很难找到自己的真正需要,而且对无用索引的维护也给系统增加了额外的开销。
所以在中文分词方面,笔者使用了中国科学院开发的ICTCLAS系统。ICTCLAS是一套广受专家好评的汉语分词系统,该系统采用的算法为隐马尔可夫模型,主要功能有中文分词、词性标注、未登录词识别,等等,是目前效率较高的一套中文分词系统。ICTCLAS提供了JAVA接口,可以使用JNI(Java Native Interface)来调用,在兼容性上不存在任何问题[3]。
3.3中英文混合检索的具体实现
在认真研究了Lucene的Analysis包、目前较好的分析器CJKAnalyzer以及ICTCLAS的JAVA接口以后,笔者编写了一个基于双字词二元切分法的中文分析器。开发平台基于JDK和Lucene1.5,使用JAVA语言实现。分析器的关键代码如下:
public final class njuChineseAnalyzer extends Analyzer {
private Set stopwords;
/*构造一个名为stopwords的字符串数列,该数列是自定义stopword(相对于Lucene本身定义的stopword来说)的列表。可以在此列表中扩展English stopwords和Chinese stopwords,只要将指定的stopword加入该数列即可。列表中的词在文档预处理时都会被自动过滤掉*/
public static final String[]STOP_WORDS =
{"a","an","and","are","as", "at", "be", "but", "by",……
"的","是","不",……};
以下是过滤器的主要代码:
public njuChineseAnalyzer(){
stopwords = StopFilter.makeStopSet(STOP_WORDS);}
public njuChineseAnalyzer(String[] stopwords) {
this.stopwords = StopFilter.makeStopSet(stopwords);}
public TokenStream tokenStream(String fieldName, Reader reader) {
try{
ICTCLAS splitWord = new ICTCLAS();/*通过定义好的接口调用ICTCLAS分词模块*/[4]
String inputString = FileIO.readerToString(reader);
String resultString = splitWord.paragraphProcess(inputString);
return new StopFilter(new LowerCaseTokenizer(new StringReader(resultString)), stopwords);
}
catch (IOException e){
System.out.println("转换出错"); //异常处理
return null;}}
经过对样本文档的处理测试,该分析器的分词效果远远好于Lucene自带的一元切分法分词,继承了ICTCLAS的高效率和高准确率。
3.4为文档添加索引
目前的Web站点主要采用ASP+IIS或PHP+Apache的模式搭建,既有动态页面,也包含静态页面,但在索引设计方面二者差别不大。下面以对动态PHP页面进行索引为例,说明如何为文档添加索引。关键代码如下:
import java.io.File; /*调用JAVA系统模块,还包括FileReader、BufferedReader、IOException、Date、DateFormat,使用同样的语句调用*/
import org.apache.lucene.index.IndexWriter;/*调用Lucene模块,还包括Document、Field、DateField,使用同样的语句调用*/
import org.apache.lucene.analysis.njuChineseAnalyzer;//调用3.3所述的分析器模块
文档索引类定义如下:
class PHPDocIndexer
{
public static void main(String[] args throws ClassNotFoundException, IOException)
{
IndexWriter writer = new IndexWriter("/home/nio/indexes-phpdoc",
new NjuChineseAnalyzer(),true); //索引保存目录,必须存在
indexDocs(writer,new File("/home/nio/phpdoc-zh")); //PHP文件保存目录
……}
public static void indexDocs(IndexWriter writer,File file) throws Exception
{
System.out.print("Add file:" + file + " ...."); //添加文件
Document doc = new Document();
doc.add(Field.UnIndexed("file", file.getName()));? //索引文件名
doc.add(Field.UnIndexed("modified",DateFormat.getDateTimeInstance().format(new Date(file.lastModified()))));?//索引最后修改时间
while (line != null) {
content += line; //截取HTML标题<title>
doc.add(Field.Text("title", title)); //索引标题
status = "end";}}
doc.add(Field.Text("content", content.replaceAll("<[^<>]+>", "")));? //索引内容
writer.addDocument(doc); //加入到现有索引中
……}}
结果输出方面,设计了类似于Google的检索输出页面,使用很方便。在Web服务器端加载Lucene之后,就可以提供站内检索服务了。
3.5测试及性能分析
为了测试该搜索引擎的性能,利用nuca.省略作为测试站点进行比较测试。该站点是南京市城市建设档案馆的Web站点,不但包含静态网页,还含有大量的动态网页和数据库文档,可以作为测试的样本。采取的方法是同时向Google站内检索和本文构建的站内引擎提交相同的5个查询关键字,将两者返回的搜索结果进行比较分析,其结果如表1所示。
本文构建的站内检索引擎响应速度较快,一般在2秒之内,而Google由于网络因素等原因响应时间较长,达到了5秒。就检索结果来看,对于短关键词,二者的查询结果差别不大,但站内引擎有响应时间上的优势,而且可以顺利拆分Google所不能拆分的中文词;对于长关键词,站内检索引擎的检索结果较之Google,其查全率更高。但是另一方面,其查准率还是不够好,对于关键词的匹配不是很精确,还需要进一步调整分词模块的代码,使其更好的匹配,以期取得更精确的查询结果。
4结语
文章提出了一个适用于Web站点内部信息全文检索的解决方案,在Lucene的中文分词和Web应用方面作了一定的尝试。未来将以此为基础,为搜索引擎增加语义分析模块,提高搜索精度。在对其功能进行进一步扩充之后,本系统可以应用到数据量较大的大中型网站站内信息的检索,较之传统方法效率和准确率都有提高。采用的Lucene开发包属于开放源代码软件,信息安全性较高;采用了成熟的ICTCLAS系统免费版本构建分词模块,为企业网站节省了一笔开支;开发时使用的JAVA语言具有良好的通用性和跨平台性。另外,还可将其应用于个人用户桌面搜索引擎的开发以及特定全文文档检索数据库的构建等方面。
参考文献:
[1]Jakarta Lucene Home Page.[2006-04-30].Jakarta.省略/lucene/.
[2]陈士杰,张明杰.基于Lucene的英汉跨语言信息检索.计算机工程,2005(13):62-64
[3]张华平.Chinese lexical analyzer ICTCLAS API manual.[2006-05-12].sewm.pku.省略/QA/reference/ICTCLAS/ICTCLAS_ API.htm.
关键词关键词:非结构化文档;全文检索;Lucene;索引文件
中图分类号:TP319文献标识码:A文章编号文章编号:16727800(2013)0010010003
基金项目:中国气象局气象关键技术集成与应用项目(2012)
作者简介:刘东君 (1982-),女,硕士,中国气象局预报与网络司工程师,研究方向为气象信息化。
0引言
大数据时代的到来使得可利用的数据和信息量越来越多。面对超负荷的海量数据,信息检索技术帮助人们在海量数据中准确、快捷地定位和找到所需要的信息。如何为不同领域的用户提供专业的、量身定做的信息服务成为目前信息检索领域普遍关注的一个热点。
近10年来,我国的气象信息化建设取得了长足的发展。气象信息系统已经成为现代气象业务体系的重要基础支撑,是现代气象业务的中枢和纽带,是国家信息基础设施的重要组成部分。气象信息系统整体能力不断提高,目前已经进入了“十二五”发展的快车道。推动气象信息化建设,在管理工作中快速应对业务系统的发展,亟需在已经颁布和归档的大量的业务规定、规范、标准和公文函件中迅速、准确、全面地查找资料信息,为气象信息化发展与决策提供信息支撑。
为进一步提升气象信息管理软实力,促进气象信息管理向标准化、数字化方向转变,本文设计并实现了国家级气象信息化业务管理检索系统。该系统将分散的原始规定、规范、标准和公文函件进行有序整编,按照信息覆盖的内容进行分类和合理组织,为国家级和省级气象信息化管理部门提供快捷、有效的业务文档管理与检索服务。
由于该系统应用了目前较为先进的信息检索与管理技术,具有良好的扩展性,能够实现部门内各类办公文档的集中检索与管理,从而对未来提升整个部门的文档管理和使用效率具有重大意义。
1系统分析与设计
1.1需求分析
建设国家级气象信息化业务管理检索系统是为了提高对各类气象信息化业务规定、规范、标准和公文函件内容的全文检索时效性、便捷性和美观性,并使用户具有良好的用户体验,其基本原理便是非结构化数据全文检索。主要需求归纳如下:
(1)对近10年的我国气象信息化规定、规范、标准和公文函件等文档进行重新组织和管理,合理分组,从逻辑上对文档内容进行分类。
(2)检索反馈迅速,满足时效要求;检索结果准确、全面,没有重复,尽量避免遗漏。重点是实现非结构化数据全文检索,能够准确定位Word、Excel、PDF等常用格式的文档信息。
(3)快速响应业务现状的变化,数据库和检索结果即时更新。
(4)系统具备良好的可扩展性和易用性。
1.2系统设计
国家级气象信息化业务管理检索系统采用分层设计的思想,划分为4个层次的架构:
(1) 数据访问层。在数据访问层的构建上,系统设计采用统一的数据访问接口来实现各类文档数据的统一访问功能,例如数据库的连接管理,数据查询以及数据库事务管理等功能。
(2) 数据实体层。考虑到气象信息业务的复杂性,系统设计以元数据驱动为开发模型,在元数据的基础上进行统一的设计。数据实体层对文档数据和相应的元数据进行统一存储与管理,并能提供高效的组合查询与检索。
(3) 业务逻辑层。业务逻辑层在整个体系架构中最为关键,具有承上启下的作用,系统设计根据用户的请求生成数据库操作语句,并把结果返回给前段界面显示。
(4) 数据表现层。数据表现层的设计功能主要是对实体数据进行展示,并实现美观易用的展示查询、元数据录入等用户界面。数据表现层是与用户的交互接口,直接影响到系统的用户体验。
1.3工作流程
对于非结构化文档(Word等格式),系统将自动从文档中提取信息,经用户修改、确认后,自动生成该文档的元数据。对于纸质文档、扫描件等无法自动提取信息的文档,用户需录入相关信息,手动生成该文档的元数据,然后系统将通过统一接口来处理元数据,将元数据和原始文档一并保存到数据组织与管理系统。同时根据中文词典库和相关分词算法,对元数据内容进行分词,为数据组织与管理系统建立索引。
检索系统将通过用户输入的包含标题、颁布时间、关键字、内容等任一或多种信息组合进行查询,并显示查询结果。
2关键技术
2.1基于Lucene 框架设计
国家级气象信息化业务管理检索系统的实现是在Lucene[1,2]全文本搜索技术框架基础上进行的二次开发。Lucene是一套使用Java语言编写的开源引擎工具包,提供了可自由扩展的查询引擎、文本分析引擎和索引引擎,近年来逐渐被广泛应用[38]。
Lucene的设计目的是提供一个简单易用的全文搜索工具包,以方便在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。其内部预先定义了索引文件的格式,并提供了面向对象技术程序访问接口。
Lucene的接口主要包括7个模块,以Java包形式提供,每个包完成特定的功能:
(1)analysis语言分析器模块。主要用于语法分析切词,提供对各种文本的切词和过滤功能,将文本解析成词条(Term)的序列。其对英文支持较好,中文切词能力一般,可以扩展此类。查询模块(search)利用语言分析器分析查询串,而索引模块(index)则在创建索引时用它分析索引的文档。
(2)document文档管理模块。用于索引存储时的文档结构管理,对索引的数据描述接口。
(3)index索引管理模块。包括索引建立、删除等。索引管理模块负责对索引的读写和解析,是系统的核心部分。在Lucene中,任何文本资源先经过文档管理模块document变成一个文档,文档是域的组合,再由文本分析模块将索引域的文本分解成一个个的词条,形成包含位置信息的词表,再经过索引管理模块index生成倒排索引(Invested Index),最后由数据存贮模块store写入到全文索引库中。
(4)queryParser查询分析器模块。实现关键词分析及检索功能,可以对查询关键词间进行运算,如与、或、非及组合操作等。
(5)search检索管理模块。包括查询结果的管理,根据查询条件,检索得到结果。查询模块负责在全文索引中搜索,它利用索引模块读取和解析全文索引。它将用户的查询语句由分析模块分解成一个词表,由查询模块对词表进行解析,解释为许多关键词查询的逻辑组合(与、或等),再由查询模块在索引中匹配基本查询的关键字,得到关键词匹配文档集,然后对关键词匹配文档集结果进行评分并逻辑组合,形成最终的检索结果。
用户输入的查询串先由分析模块分解成一个词表,由查询模块对词表进行解析,形成一组关键词和关键词之间进行组台的查询逻辑(与、或等),再由查询模块在倒排索引中匹配关键词,得到关键词匹配文档集,最后关键词匹配文档集和查询逻辑处理,得到最终的结果文档集。
(6)store数据存贮管理模块。包括一些底层的文件级操作,提供了对磁盘文件或内存的各种数据结构的读写功能,主要由索引模块使用,向索引模块屏蔽了存贮的底层物理细节。
(7)此外还有util公用工具类。
2.2全文检索流程实现
本系统在对Lucene全文检索引擎工具包进行深入剖析的基础上,进行扩展以及二次开发:
(1)采用新的中文语言分析器进行中文分词,实现对中英文文档的全文索引。
(2)针对非结构化文档多样性的特点,建立统一的文件非结构化文档处理接口,把各种途径得到的数据源进行处理,转化成统一的、索引器能够理解的通用文档结构。
(3)语言分析器对统一格式的通用文档结构进行分词处理,生成词条序列,供索引模块进行索引。索引模块读入语言分析器解析文档生成的词表,然后对词表中每个词条进行索引,并将索引结果保存到索引数据库中。
(4)检索模块读入用户的查询,在索引数据库中进行检索,并在把检索到的匹配结果经过排序后返回给用户。检索模块同时引入同义词和业务词汇词典,提高检索正确率。
2.3数据有效组织形式
(1) 简单有效的文档目录组织结构。针对需求,提前开展了文档整编分析,将原始资料以日期、收发类型、文件类型分层目录形式组织,便于文档快速定位和存取。
(2)非结构化文档处理统一接口。本文系统基于Lucene进行二次开发,对WORD、PDF、HTML、TEXT文件建立针对不同格式的文件解析器,统一转化成索引器能够理解的通用文档结构。这样做既可以屏蔽文档的不同格
式,又可以随时增加新格式的文档。在程序设计上,只需
设计每种格式对应的解析器便可以对各种文件进行索引。
(3)合理有效地组织元数据。除自身文档内容外,非结构化文档的使用往往还需要其它信息,如数据来源、收发类型、废止时间、有关人员等。为方便用户快速掌握上述信息,系统内部对每个非结构化文档都配置了一个元数据,用于承载相关信息。当然,部分非结构化文档自身会具有一定的元数据功能,但是考虑系统的规范性和统一性,本系统统一配置了元数据信息。
3结语
本文论述了运用Lucene框架涉及的相关技术,探索了如何运用这些技术帮助用户在非结构化的文档中获取信息的方法,并提供了一套非结构化数据全文检索解决方案。国家级气象信息化业务管理检索系统作为中国气象局重点推广的新技术项目,已投入测试运行。系统简洁美观的界面风格、快速的检索响应效率,验证了方案的可行性。后续工作中,还将继续设计和完善符合气象业务需求的中文分词器和更符合专业要求的评分系统机制。
参考文献:
[1]Apache Lucene web site[EB/OL].http:///
[2]GOSPODNETIC O,HATCHER E. Lucene IN ACTION [M].中文版.北京:电子工业出版社,2007.
[3]邱哲,符滔滔.开发自己的搜索引擎—Lucene 2.0+Heritrix[M].北京:人民邮电出版社,2007.
[4]谢峰,刘洪星.基于Lucene的Web站内搜索引擎的研究[J].电脑知识与技术,2008(2): 691694.
[5]郎小伟,王申康.基于Lucene的全文检索系统研究与开发[J].计算机工程,2006(4):9496.
[6]周登朋,谢康林.Lucene搜索引擎[J].计算机工程,2007(18):9596.
1检索查询
检索查询是系统最主要的功能模块之一,能够提供多维度、多类型的检索方式,以适应不同用户容的个性化检索要求。一是跨库检索,可将自有图情资源和外购图情资源(主要包括来自中国知网、国标数据库、法律法规库、超星图书库等的资源)进行有效整合,使不同来源的资源能够通过点选在统一的搜索引擎界面进行检索,实现检索查询的无缝集成。检索及展示界面风格简洁(类似百度等网络搜索引擎的界面),并保证检索速度及准确率。二是关键字检索,可对不同子类别的主要字段进行检索,主要针对题名字段。检索结果以列表和图形方式展示,其中列表主要包括编号、标题(书名等)、操作、全文,还包括不同子类别的主要字段。结果支持翻页操作,点击记录时可以展开显示摘要信息,用户可根据需要自行选择每页显示条数(10条、20条、50条、100条)。三是组合检索,检索条件包括题名、编码、版次、关键词、出版社、出版时间等字段,并可由管理员根据用户使用情况对条件进行调整。检索结果以列表和图形方式展示,列表主要包括编号、标题(书名等)、操作、全文,还包括不同子类别的主要字段。结果支持翻页操作,点击记录时可以展开显示摘要信息,用户可根据需要自行选择每页显示条数(10条、20条、50条、100条)。四是全文检索,通过建立图情信息全文搜索引擎和图情信息主题词库,为用户提供包括模糊检索、高级检索、知识元检索等多种检索方式在内的全文检索服务,全面满足不同用户的搜索需求。五是模糊检索,模糊检索是当前最主流的检索方式,也是系统默认的检索方式,能够实现对图情全文的快捷检索。检索时对检索条件自行分析,按照关联度查找相关图情信息,并判断其与检索条件的匹配度,依据匹配度从高到低依次展示相关信息。查询、展示界面参考百度等网络搜索引擎。
2数字图书馆
数字图书馆融合了公司自建图书馆的资源,以及所采购的超星电子图书馆的资源。它向用户推荐最新最畅销的图书信息,并能让用户在家中、办公室里或任何能上网的场所查询或获取数字信息。
3馆藏资源
馆藏资源收录了国内外法规标准、国内外标准规范、国内外情报资料、期刊以及专业图书,是相关用户特别是公司员工获取知识的重要来源。
4数字资源
数字资源囊括了中国知网、万方知网、北大法宝、北大司法案例、标准全文数据库、核标准全文数据库、环境保护标准全文检索系统、环境保护法律法规全文检索系统等平台的资源。
5信息
由网络雷达自动抓取指定网址的情报信息,由管理员审核后。门户首页的信息模块列表显示最新的情报信息,默认显示当月审核通过的文章。抓取网页地址和情报关键词以及抓取时间等采集配置可根据用户需要自行定义,抓取信息显示可自行配置分类树,方便浏览和管理。抓取后的内容可进行选择性和删除,避免信息冗余。
6专题汇编
【关键词】人才网 全文搜索系统 设计 lucene.net
1 系统设计
1.1系统概念模型
随着现代经济的发展,人才网的规模越来越大,人才网的功能也越来越使用,本文根据用户对人才网的普遍使用需求,设计了如图1所示的系统概念模型。其中,通过html语言实现用户界面;数据库通过对数据的加载和转换操作实现对推荐引擎的数据支持;模型库运行各类数据预测模型,同时以web service提供系统服务。
1.2 系统架构
人才网由于所涉及的各类信息较多,通常采用分布式全文检索系统,主要包括了检索服务、负载均衡服务及web服务3个部分组成。随着求职人数的不断增加,企业所提供的职位也越来越多,在这种条件下,系统需要实现对大量人才信息与企业职位信息资料的全文检索。因此,需要综合考虑在文件服务器及数据库中存储文档,提高系统的扩展性,使硬件的性能得以充分发挥,并实现高速的索引和检索服务。同时,通过将lucene.net提供的索引及检索功能与.net框架中的remoting技术结合到一起,实现了分布式的信息索引和检索。
系统结构主要包含了分布式索引与检索、负载均衡及web服务三个部分。
(1)分布式索引与检索服务。该部分服务主要是通过多台服务器对数据库及文件服务器中的文档建立索引,最终检索出用户想要搜索的信息。该服务所提供的功能如表1所示。
(2)负载均衡服务。该部分服务主要实现对检索操作的调度,首先需要对系统当前的所有负载信息进行保存,这些信息主要包括当前连接的服务器信息、各个服务器的平均检索速度以及任务耗时等方面的信息;然后将各检索服务器的指标进行对比,系统按照对比结果将检索任务分配给负载最小的检索服务器执行。
(3)web服务器。web服务器的主要功能是提供网上信息浏览服务。在系统中,web服务主要为人才网前端与后台系统提供了对接渠道,将从后台服务器中所提取的信息转换成清晰易懂的图文信息,并将这些信息展示到客户端浏览器中。
1.3 系统流程
(1)索引流程。系统的索引流程主要可以分为三个阶段,首先是预处理阶段,lucene从系统源文件中提取出文本信息,然后将这些文本信息转换成可以进行处理的字符流,创建lucene的索引文档对象以及所对应的索引域对象;其次是分析阶段,调用系统的索引管理器中的adddocument()方法将数据传递给lucene执行索引操作,在对数据进行索引处理的过程中,lucene会调用系统分析器对这些数据进行分析操作,实现对数据的过滤和分词,提高索引的效率;最后是索引写入过程,lucene完成对输入数据的分析后,会将分析结果以倒排索引的形式写入到索引文件中。
(2)检索流程。在建立索引结构滞后,可以通过指定的字段对索引进行检索。检索模块的性能及友好性对全文搜索引擎存在极大的影响,如果检索模块的性能较低,那么,无论系统的功能有多强大,整个系统也没有太大的实际应用意义。
在对索引库信息进行检索的过程中,lucene首先会通过调用indexsearcher()函数来打开索引库,其中的参数指定索引库的具体路径,其次是使用queryparse()函数对查询语句进行转换,将其转换成可供lucene进行查询的对象,最后是执行搜索命令,并将结果返回到hits集合中。
2 核心算法
2.1 同义词识别
在进行信息检索的过程中,通过采用频繁项集技术处理核心职位的名称表述,从而实现对同义词及近义词的识别。
2.2 聚类算法
通过手动设置职位的类别范围,系统通过x-means聚类算法从中找到最佳类别,从而实现对职位类别的聚类。通过聚类操作,可以使系统根据应聘者所选择的职位类别进行智能职位信息推荐。
2.3 特征分类
通过对所收集的各类信息进行整理和分析,然后根据这些数据信息的来源特点,可以将信息特征分为基本特征、提取特征、标签特征和行为特征,这样可以为不同的推荐算法提供依据,有效提高现算法结果的精确度。
3 实验结果分析
本文的全文搜索系统基于lucene.net框架进
行设计,采用mysql编写后台数据库,操作系统使用microsoft公司的windows server系统。总共架设两台物理服务器。
3.1 数据库数据报告
通过在数据库中的如下字段建立索引目录:
id,job_types_name, work_place_name, job_property_type, trade_name, job_name, app_time, sex_name, age, degree, specialty_name, academy_name, cert, train_msg, work_length.
针对以上字段,只对其中的id进行存储,针对其它字段只进行分析,需要使用时,可以利用id进行调用。
索引结果:
通过在两台服务器上安装10个索引服务,创建用时1h左右;每台服务器处理月500万条数据,用时1853s,索引存储空间消耗约2.01gb.
3.2 搜索结果
通过测试程序对多个关键字段分别进行搜索实验,搜索字段包括job_type_name,specialty_name,trade_name等,然后利用返回信息的id号从数据库中取出相应的数据信息。具体的实验数据如表2所示。
从表2的数据可以看出,采用分布式的全文检索系统,可以使检索速度和检索效率均得到较大程度的提升。
参考文献
[1]苏景春.基于lucene的全文检索系统的设计与应用[d].北京:北京交通大学,2010.
[2]赵河,逯鹏,李永强.基于lucene的搜索引擎设计与实现[j].计算机工程,2011(16):4-7.
[3]陈忱.lucene排序算法的个性化改进[j].科技与企业,2012(2):23-28.
[4]李永春,丁华福.lucene的全文检索的研究与应用[j].计算机技术与发展,2010,20(2):12-15.
[5]彭焕峰.基于lucene的中文分词器的设计与实现[j].微型机与应用,2011,8(18):8-11.
oracle论文参考文献:
[1]殷泰晖,李帅.基于TNS协议的Oracle数据库安全性改进方法[J].合肥工业大学学报(自然科学版),2012,35(02):193-196.
[2]孙钟安.大型数据库ORACLE数据库的优化设计思考[J].电脑知识与技术,2014,10(20):4644-4645.
[3]于淑云,马继军.ORACLE数据库安全问题探析与应对策略[J].软件导刊,2010(12):147-149.
[4]肖飞,黄正东,王光华,郭雪清.JAVA存储过程在Oracle数据库中的应用研究[J].中国数字医学,2014,9(03):18.
[5]魏亚楠,宋义秋.Oracle数据库应用系统的性能优化[J].制造业自动化,2010,32(8):204-206、222.
[6]曹新志,沈君姝,郭辉,等.Oracle数据库在PACS/RIS系统中的应用[J].中国医疗设备,2013(07):35-37.
[7]彭小斌,张文峰,林根深.ORACLE数据库并发访问控制机制及访问冲突的解决方法[J].中国医疗设备,2013,28(01):44-45、14.
[8]付强,王春平.基于半实物仿真的半自动跟踪技术开发平台[J]四川兵工学报,2012,33(08):69-70、80.
[9]孔银昌,夏跃伟,刘兰兰,等.Oracle数据库安全策略和方法[J].煤炭技术,2012,31(03):190-192.
[10]梁树杰,黄旭彬.Oracle数据库维护中自动跟踪技术的应用分析[J].电子科技,2014,27(10):61-63.
[11]刘哲.基于Oracle数据库系统的优化与性能调整研究[J].绿色科技,2015,05:283-284+287.
[12]胡铁峰.浅议如何调整优化Oracle9i数据库的性能[J].黑龙江科技信息,2014,22:86.
oracle论文参考文献:
[1]段桂芹.基于DBA岗位需求的高职Oracle数据库课程教学改革[J].计算机教育,2014(2).
[2]李秀芳.应用型人才培养模式Oracle数据库课程教学研究[J].中国电力教育,2013(35).
[3]周溢辉.项目导向任务驱动的数据库应用课程改革探讨[J].软件,2012(4).
[4]任淑美.《大型数据库系统Oracle应用开发》课程实训教学的研究[J].计算机光盘软件与应用,2013(2).
[5]龚晓君.基于行动导向的Oracle课程教学实践[J].计算机时代,2011(6).
oracle论文参考文献:
[1]魏永丰,刘立月.异构数据库系统中的Oracle与SQLServer数据共享技术[J].华东交通大学学报,2005,22(1):92?94.
[2]郭东恩,沈燕.Oracle透明网关技术实现异构数据库互连[J].电脑开发与应用,2008,21(9):58?59.
[3]蓝永健.利用Oracle透明网关技术进行系统整合的研究[J].广东第二师范学院学报,2008,28(5):92?96.
[4]OracleCorporation.Oracle11gdatabasedocumentation:gatewayforSQLserveruser’sguide,11grelease2[R].California,USA:OracleCorporation,2009.
[5]OracleCorporation.Oracle11gdatabasedocumentation:textapplicationdeveloper’sguide11gRelease2[R].California,USA:OracleCorporation,2009.
[6]OracleCorporation.Oracle11gadocumentation:textreference[R].California,USA:OracleCorporation,2009.
[7]熊志辉,王德鑫,王炜,等.基于Oracle的多权限多格式文档组织与检索系统[J].计算机应用,2008,28(9):2407?2409.
[8]朱松岩,叶华平,李生林,等.基于多层授权体制的档案全文检索系统设计与实现[J].后勤工程学院学报,2005,21(1):57?60.
[9]李瑞丽,钱皓,黄以凯.基于Oracle大数据的全文检索技术研究与实现[J].微型电脑应用,2013,29(1):18?21.
[10]李尚初.Oracle的全文检索技术[J].哈尔滨师范大学自然科学学报,2009,25(4):92?95.
[11]OracleCorporation.Oracle11gdatabasedocumentation:performancetuningguide[R].California,USA:OracleCorporation,2009.
关键词 古籍数字化 古籍使用 建设模式 历史文化遗产
分类号 G255.1
中文古籍数字化工作已经在国内开展了30多年,各种形式的数字化古籍已经在市场上纷纷涌现。同时,有关古籍数字化的方案、技术和理论,学界也取得了丰硕的研究成果。尤其是数字化古籍的优缺点、古籍数字化的成果总结、古籍数字化的技术实现、古籍数字化工作的重难点以及对于古籍数字化工作的反思等,都是学者关心的话题。笔者主要从事中文古籍的整理和研究工作,不可避免地要接触到数字化古籍,因此对古籍数字化工作的现状也曾略有留意。目前笔者正在参与国家社科基金重大项目《荆楚全书》的编撰工作,并负责宜昌地区古文献的点校,对数字化古籍的利用情况又有了切身的体会。因此,笔者从一名使用者的角度,结合实际工作中使用数字化古籍的感受,谈谈目前古籍数字化工作的几点问题。
1 版本
古籍的版本对于其学术价值有着决定性的影响,学术研究所采用的古籍版本也是学者专业水平的体现。当前的古籍数字化工程大多注重题材的选取,而忽视古籍版本的价值。就以香港迪志文化出版公司与上海人民出版社合作出版的“文渊阁《四库全书》”电子版为例,这的确是一个很有吸引力的题材,但精心制作而成的数字版本却很少被学术论著所引用。主要是因为《四库全书》在编撰过程当中,清廷有意删改原书,使其版本价值大打折扣。实际工作中,文史研究者往往会选择其它精校本,而不是《四库全书》本作为参考文献。如要引用正史材料,学者一般会采用中华书局点校本《二十四史》;如需引用诸子,学者也多会选择中华书局点校本《新编诸子集成》。哪怕是专门的文献整理和研究者,在选择底本或者参校本时,《四库全书》本往往也不是最佳的选择。比如刘韶军先生点校《太玄集注》,是以明抄本为底本,“以道藏本、大典本、张士镐本及胡注残卷对校前六卷”[1],以五柳居本为参考点校后四卷。《四库全书》本《太玄经》出自明朝本,其版本价值不及明抄本,故而不用。再如王利器先生撰《新语校注》,所用《新语》以浮溪精舍刻宋翔凤校本为底本,校以明李廷梧刻本、子汇本、程荣刻《汉魏丛书》本、《两京遗编》本等[2],尽管四库本也有可取之处,仍然弃而不用。而对于古籍数字化来说,耗费极大的人力和物力,完成一项浩繁的工程,成果却不能很好地应用于学术研究,这其实是造成了严重的资源浪费,也有违古籍整理工作的宗旨。
从事古籍整理与研究的学者对古籍文字的要求是相当苛刻的,因此数字化古籍的校勘质量是其版本价值的重要指标。值得肯定的是,香港迪志文化出版公司的“文渊阁《四库全书》”电子版校勘精细,是目前校勘较好的古籍电子化产品之一,其它产品均难达到这一境界。有学者指出古籍电子化产品的学术水准应以进入专业研究者的参考文献为最高目标,这是很有道理的。但目前的数字化古籍产品普遍存在校勘不精的问题,使之与参考文献的标准相去甚远。以中国国际图书贸易总公司《中国历代典籍总目分析系统》中的《二十五史研习系统》为例,其校勘欠精之处甚多。如《史记・武帝本纪》:“太史公曰:学称五帝,尚矣。”“学”后脱一“者”字、一“多”字。又《后汉书・光武本纪》开篇就是“东观记林作临字yydd按”,文本及格式错乱不堪,不知所云。且于“赵缪王子林说光武”之前连正文带注阙数千字,殊为草率。一般的数字化古籍电子都达不到《四库全书》的校勘精度,以上所举仅见一斑。也许是因为高精度的全文检索系统制作成本太高,超出了一般企业或研究单位所能承受的限度。这样的数字化古籍当然无法满足学术研究的文献需求,更不能成为专业研究者的参考文献。版本质量将会成为古籍数字化产品向高端迈进的瓶颈。
2 检索
检索快捷这也是数字化古籍的一大优势,有学者乐观地认为:“与传统学术研究的辛苦查找、梳理资料相比,当代的文史研究工作者可以轻轻一点鼠标而资料就会呈现在眼前,省去了寻找资料的辛苦。”[3]于是,当前的古籍数字化工程大多追求全文检索功能的实现,具体的做法就是将数字图像转换成电子文本,以便于全文检索。这对于现代文献和外国文献来说是很容易实现的技术,但是对于我国的古代文献来说却是一项非常复杂和困难的工作。
首先是汉字处理问题,也是古籍数字化工作最早遇到的问题。中国的古文字至为复杂,为了保持古文字的原貌以客观再现古籍内容,目前业界大多采用Unicode作为文字处理的标准,Unicode已经定义了7万多汉字,而且还在不断扩充,仍然不能完全满足古籍文本的转换需要。这已经是一项不小的工程,但如何处理古籍在传抄、刊刻过程中所产生的异形字、避讳字、通假字等问题,在技术上仍然存在不小的难度。哪怕是“文渊阁《四库全书》”电子版也有处理不了的文字问题,多处有“字位过密无法显示”字样,比如史部地理类《陕西通志》。既然汉字处理的问题不能完全解决,全文检索功能必然要打折扣。
其实,就算能够完全实现古籍文本的数字化,全文检索的命中率依然不会很高,因为还有中国特有的语言文化的问题。对于西方或者现代文献来说,在大多数情况下,字面所反映的基本上就是事物的真实意义;而对于中国古代文献来说,字面所反映的并不一定是事物的全部内容,如果要了解事物的全部内容,则必须从字里行间去寻找“言外之意”或者“微言大义”。因此,一些用于现代文献、外国文献的数字技术和方法可能对于中文古籍来说并不十分适用。即使数字化工作能将古籍文字以数字方式再现,对于学术研究来说仍然显得不够。这应该是数字化古籍在实际学术研究中利用率不高的一个重要原因。
3 阅读
易于储存和携带这是数字图书的优势,但阅读舒适性低也是数字化图书的通病,数字化古籍尤其如此。有研究者指出:“无论是利用电脑还是借助于掌上阅读器,数字化图书阅读的舒适性与方便性都远远不及纸质图书。无论界面设计如何完善,总会有光强度、分辨率、运行速度等各种技术因素的影响,无法达到传统图书的舒适与方便,直接干扰了读者的思绪。”[4]这是因为传统的纸质文献,尤其是古籍,作为人类数千年文化的积淀和人类积累文化的主导方式,对于人们的阅读习惯也产生了根深蒂固的影响。因此我们更加习惯于直接面对书籍,尤其是直接去感受古代典籍带给我们的历史文化气息。
虽然随着图书数字化工作的普及和深入,阅读习惯也正在发生着改变,但这种改变是不可能在短时期内完全实现的。所以现在很多古籍虽然已经有了数字版本,很多读者还有将数字本打印下来进行阅读的习惯。而专门从事古籍整理和研究的学者,更是坚持要将数字图像本古籍一页页打印成纸本,然后进行阅读、点校和研究,最后又将成果重新转化为电子文档。在一些特别的古籍整理与研究工作中,比如古籍修复、版本鉴定,原版的纸质古籍更是数字化古籍无法取代的。因为古籍不仅仅是用单纯的文字符号给我们传达知识,其中的每一个细节都是我们了解历史文化知识的重要信息源。
但出于古籍保护工作的需要,研究者和整理者又要尽量避免对古籍原本的直接操作。因此在实际工作中,笔者和同事都是先将古籍逐页扫描成图片,再将图片打印出来作为工作本进行阅读和点校。只有高仿真的古籍复制品才可以代替原本称为研究者和整理者的工作对象,因此古籍影像远比电子文本更有学术价值。
4 保真
鉴于数字化古籍存在的种种问题,很多学者对古籍数字化工作也进行了反思,提出了一些修正意见,尤其强调在古籍数字化工作中要坚守保真原则,“有效保全古籍中的原生态信息”[5]。古籍整理的主要任务就是要促进古籍的保护和利用,古籍数字化工作的任务当然也是这样,既要使古籍所承载的知识能够有效地服务于学术和研究,又要让古籍本身不至于受到损坏。两者之间存在矛盾,只有以保真为原则对古籍进行电子化,使数字古籍能够替代古籍原本成为阅读和研究的对象,才可以将两者统一起来。
国内的古籍数字化工程大多注重全文检索功能的实现和完善,目的在于使研究者能够方便快捷地从文献中检索出符合条件的材料。就笔者从事古籍整理与研究工作的经验来看,有观点、思想乃至思想体系才是最难的,这是人脑的工作,也是电脑无法取代的,收集资料则次之。为了完成特定的科研任务,难度又在广泛收集相关的文献上,而从已有的文献资料中剥离出可用的材料则又次之。目前的数字化古籍最大的长处无非就是能迅速从文献中检索出符合条件的材料,但对于专业的研究人员来说,这其实无需花费太多的时间和精力。暂且不说数字化古籍全文检索功能的命中率,我们要将一大堆貌合神离的材料加以仔细的分析、整理和研究,才能形成高质量的科研成果,这也是电脑无能为力的地方。
从国外的中文古籍数字化成果来看,大多注重影像数据库的建设。美国国会图书馆《AmericanMemory Pilot Project计划》将该馆21万件馆藏予以数字化处理,转化成数字化图像;英国图书馆《British Library Images Online计划》将馆藏珍罕文献影像数字化;日本国立国会图书馆制定《国立国会图书馆数字图书馆计划》,至2003年已建有500余件中文古籍图像数据库。中文古籍的数字影像虽然不具备全文检索功能,但显然比全文文档具有更高的保真性,提供的数据也更具有完整性和准确性,其学术价值显然也远胜于全文文档。因此,迪志的“文渊阁《四库全书》”电子版还同时配备了图像光盘,这才是该产品的最大价值所在。
>> 3G时代从“芯”来看 红花还需绿叶衬 “芯”病还需信心医 给创客一颗芯 分析多芯3G数字通信电缆 MP3!你的“芯”我懂。 3G上网本,买本还是买“芯”? 揭秘MP3播放器的“芯”病! 小编带你看双“芯”MP3 3D封装“芯”的瘦身革命 中星微“芯”品推动3G高端体验 智慧医疗 互联芯通 彩屏+“飞”芯魅E3CMP3播放器拆解测试 世博会门票有颗“RFID芯” 潍坊:用“芯”照亮智慧教育之路 给作文一颗奔腾的“芯” 给显卡一颗冷静的“芯” 给“中国芯”的建议 王翔:给小米补“芯” 中薯3号马铃薯稻草包芯高产栽培技术 常见问题解答 当前所在位置:l
Acrobat9标准版中文帮助:/y8kcs7f
Acrobat9中文帮助PDF版:/y8rbktr
Acrobat开发中心:/devnet/acrobat
人物专访
有些程序员对插件开发不以为然,不过我个人对它情有独钟,因为我编程生涯的第一桶金,与插件开发颇有关联。
我刚参加工作时,曾私下接过一个外单,是为某家杂志制作全年的全文检索电子书。这家杂志原来用的是专业的数据库检索系统,制作成本很高,一张600MB的全文检索光盘,制作公司要价3万多元。我只要8000元就拿下了这个项目,主要因为我是个人业余制作,没有什么硬成本,另外Acrobat PDF自身的全文检索功能已经很强大,我只是通过它内嵌的Acrobat JavaScript支持开发出一些小插件,让它自身的PDF全文检索更方便调用而已,开发成本也就低了很多。
也是因为这一成功案例,我一直关注着PDF插件开发的发展。其实PDF相关的开发,有着巨大的商机,比如基于Foxit Reader(一款第三方PDF阅读器:.cn/)延伸出的一系列产品,可以支撑起一家软件公司;再比如国外许多PDF插件产品,售价都近百甚至好几百美元,比一般的软件都贵。
项目简介
本例主要为让大家熟悉Acrobat JavaScript的开发流程,所以实现的功能相对简单:为已经制作好的静态PDF相册添加动态效果,PDF相册一打开就自动全屏显示,翻页时显示不同的动态效果(如马赛克、百叶窗效果等)。本例在Acrobat CS3下实现。
编写代码
在Acrobat中制作好PDF静态相册后,点击菜单“高级文档处理文档级JavaScript”,打开脚本编辑器,输入脚本名称(需用英文),然后点击“添加”,在弹出的窗口中,清除原有内容后填写如下代码(见图2):
this.setPageTransitions({ aTrans: [-1, "Random", 1] } );
app.fs.isFullScreen=true;
点击“确定关闭”返回,按Ctrl+S键保存文档。上面代码中,第一行设置文档翻页特效,第二行设置文档打开后自动全屏,使得相册看起来更专业。
给自己的脚本加把锁
上面的代码比较简单,没有保护的必要,可一旦你写出了具有商业价值的脚本代码时,肯定不想随便让别人看到,那不妨将它们“锁”起来(此方法仅适用文档内脚本)。
在Acrobat中,点击菜单“文件属性”,在属性窗口中切换到“安全性”选项卡,安全性方法选择“口令安全性”,又会弹出如图3所示窗口。勾选“限制文档编辑和打印。改变这些许可设置需要口令”,再设置许可口令,确定后保存文档即可。
使用Reader的用户是无法查看到PDF中的密码的,其他人即使也有Acrobat,如果你经过了以上加密处理,他们打开PDF文档后,会发现“编辑全部JavaScript”、“文档级JavaScript”、“设置文档动作”等命令是灰色不可用状态的,也就无法查看代码了。
【任务实战二】智能编制PDF网址簿
给PDF插入脚本,如同添加了智慧“芯”,更智能地处理任务。比如网上不少的PDF电子书中,包含大量网址资源,如果想提取出来收藏,手工操作未免太麻烦,通过脚本则可以一键完成。
启动Acrobat,点击菜单“高级文档处理批处理”打开批处理序列窗口,单击“新建序列”按钮,为序列取一个名称,如“提取网址”,确定后打开如图4所示窗口。单击“选择命令”,然后选中“执行JavaScript”,将其添加到右侧窗格,再点击“编辑”,在打开的编辑器中输入脚本代码,连续“确定”返回即可。
详细脚本代码参见/cfan/201009/ExtraURL.zip,值得说明的是,其中:
var reMatch=/((((ht|f)tp(s?))\:\/\/)|())([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,6}(\:[0-9]+)?(\/\S*)?/g;
是通过正则表达式定义要从文档中提取的内容,这里为带http、https、ftp、www等特征的网址字符串。修改此变量,可达到提取文档中其他任意字符串的目的。接下来的ExtractFromDocument()函数是提取网址的具体实现,有兴趣的朋友可以参考源代码(内附注释)。
它的使用很简单:同上打开批处理序列窗口,选中刚刚创建的脚本,单击“运行序列”,按提示选择要提取网址的PDF文档,确定即可。很快会在源文件同目录下生成一个类似“CFan_中提取出的网址.pdf”文件,效果如图5示。
【高手进阶】
下面给大家推荐一些不错的PDF插件资源网站。因为PDF插件开发在国内还没形成很大规模,而在国外市场就成熟多了,相应的国外资源也就多一些。
Acrobat脚本实例教程:/y7ew9mq
Acrobat脚本讨论:/2ua94r
中文PDF交流社区: