利用xapian构建自己的搜索

利用xapian构建自己的搜索

ID:19654735

大小:97.00 KB

页数:17页

时间:2018-10-04

利用xapian构建自己的搜索_第1页
利用xapian构建自己的搜索_第2页
利用xapian构建自己的搜索_第3页
利用xapian构建自己的搜索_第4页
利用xapian构建自己的搜索_第5页
资源描述:

《利用xapian构建自己的搜索》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、1.前言1.1.Xapian与开源Xapian的官方网站是http://www.xapian.org,这是一个非常优秀的开源搜索引擎项目,搜索引擎其实只是一个通俗的说法,正式的说法其实是IR(InformationRetrieval)系统。Xapian的License是GPL,这意味着允许使用者自由地修改其源码并发布之。Xapian的中文资料非常少,可以说现在互联网上连一篇完整详细的Xapian中文介绍文档,更别说中文API文档了。其实,Xapian的英文资料也不多,除了官方网站上的Docs和Wiki外,还有一些网站上的邮件列表,在这方面跟Lucene没得比。当然,

2、Lucene现在已经发展到2.x版本了,而Xapian的最新版本才1.012,国外开源项目一般对版本号控制得比较严格,一个项目一般到了1.x才算稳定和成熟的。1.2.Xapian可以运行在那些平台?Xapian由C++++编写,但可以绑定到Perl,Python,PHP,Java,Tcl,C#和Ruby甚至更多的语言,Xapian可以说是STL编程的典范,在这里您可以找到熟悉的引用计数型智能指针、容器和迭代器,甚至连命名也跟STL相似,相信一定能引起喜好C++++和STL的你的共鸣(实际上,很少C++++程序员完全不使用STL)。由于Xapian使用的是STL和C运

3、行时库,因此具有高度可移值性,官方说法是可以运行在Linux、MacOSX、FreeBSD、NetBSD、OpenBSD、Solaris,、HP-UX,、Tru64和IRIX,,甚至其它的Unix平台,在MicrosoftWindows上也跑得很好。当然,并不能像Java那样“一次编译,到处可以运行”,当移植到其它平台时,一般来说是需要重新编译的。至于如何在Windows32位系统下编译Xapian,请查阅我以前写的文章《nmake在windows平台下编译xapian》。1.3.Xapian的特性依官方的说法,Xapian是一个允许开发人员轻易地添加高级索引和搜索

4、功能到他们的应用系统的高度可修改的工具,它在支持概率论检索模型的同时也支持布尔型操作查询集。从功能特性上来说。Xapian和Lucene有点相似,两者都具有Term、Value(在Lucene里称为SortField)、Posting、Position和Document,不过Xapian没有Field的概念,这直接导致Xapian在使用上比Lucene麻烦了那么一点。但这完全不是问题,通过一些小技巧,完全可以自己在Xapian中实现Filed的概念。在Lucene里还有一个叫Payload的元素,即词条(Term)的元数据或称载荷。举一个例子,“回家吃饭吧”和“快回

5、家吃饭”这两个句子都带有“吃饭”这个词语,但在检索的时候怎样才能将语气表达出来呢?虽然可以添加Term来解决这个问题,但由于Term的索引信息和存储信息是分开放的,相对来说I/O性能较差,Payload就是应这个问题而生的,因为Payload信息是直接放在索引里的。由于对Xapian的研究还不是很深,Xapian里是否有类似Payload这个概念,还需要继续研究。1.4.Xapian与搜索搜索的目的是将结果数据展现给终端用户,搜索引擎与普通的数据库查询最大的区别就在于查询。Xapian提供了多种的查询机制。概率性搜索排名–重要的词语会比不那么重要的词语得到更多的权重

6、,因此与权重高的词语关联的Documents会排到结果列表的更前面。相关度反馈–通过给予一个或多个Documents,Xapian可以显示最相关的Terms以便扩展一个Query,及显示最相关的Documents。词组和邻近搜索--用户可以搜索一个精确短语或指定数组的词组。全方位的布尔型搜索器,例如("stockNOTmarket",etc)。支持提取搜索关键字的词干,例如当搜索“football”的时候,当Documents中含有"footballs"或"footballer"的时候也被认作符合。这有助于找到相关结果,否则可能错过之。词干提取器现在支持Danish

7、、Dutch、English、Finnish、French、German、Hungarian、Italian、Norwegian、Portuguese、Romanian、Russian、Spanish、Swedish和Turkish。支持通配符查询,例如“xap*”。支持别名查询,打个比方,C++++会自动转为CPlusPlus,C#则自动转为CSharp。Xapian支持拼写纠正,例如xapian会被纠正为xapain,当然这必须基于词组已经被索引了。这特性跟Google提供的“你是不是想搜索xxx”有点相似。1.5.Xapian的存储系统Xapian现在的版

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。