当前位置: 首页 > 工具软件 > Xapian > 使用案例 >

xapian简介

裴翰学
2023-12-01

 1.   Xapian的官方网站是http://www.xapian.org,是一个非常优秀的开源搜索引擎项目,搜索引擎其实只是一个通俗的说法,正式的说法其实是IRInformation Retrieval)系统

2.   XapianLicense(版权许可证)GPL,意味着允许使用者自由地修改其源码并发布之。Xapian允许开发人员添加高级索引和搜索功能到他们的应用系统。

GNU:一个自由软件工程项目。

GPL:General Public License,GNU通用公共许可证

3.     XapianSTL编程的典范

STL =Standard Template Library标准模板库STL是一些容器算法和其他一些组件的集合STL现在是C++的一部分STL可分为容器(containers)迭代器(iterators)空间配置器(allocator)配接器(adaptors)算法(algorithms)仿函数(functors)六个部分

4.   xapian在支持概率论检索模型的同时也支持布尔型操作查询集。

5.   xapian的查询机制:

  • 概率性搜索排名——重要的词语会比不那么重要的词语得到更多的权重,因此与权重高的词语关联的Documents会排到结果列表的更前面。
  • 相关度反馈 ——通过给予一个或多个Documents, Xapian可以显示最相关的Terms以便扩展一个Query,及显示最相关的Documents。
  • 词组和邻近搜索——用户可以搜索一个精确短语或指定数组的词组。
  • 全方位的布尔型搜索器,例如 ("stock NOT market", etc)。
  • 支持提取搜索关键字的词干,例如当搜索“football”的时候,当Documents中含有"footballs" 或"footballer"的时候也被认作符合。这有助于找到相关结果,否则可能错过之。词干提取器现在支持Danish、Dutch、 English、Finnish、 French、 German、 Hungarian、Italian、 Norwegian、Portuguese、Romanian、Russian、Spanish、Swedish和Turkish。
  • 支持通配符查询,例如“xap*”。
  • 支持别名查询,打个比方,C++会自动转为CPlusPlus,C#则自动转为CSharp。
  • 支持拼写纠正,例如xapian会被纠正为xapain,当然这必须基于词组已经被索引了。这特性跟Google提供的“你是不是想搜索xxx”有点相似。

6.   Xapian现在的版本默认是使用flint作为存储系统flint是以的形式来存储,默认每块是8K,理论上每一个文件最大可以达到2048GB

7.   Xapian使用unsigned32-bit ints作为Documentsid值,因此在每个XapianDatabase中,最多可容纳40亿Documents

8.   XapianTermsDocuments都是使用B-来存储的,很多关系数据库的索引都是用B-树或B+树来存储的,具有增删改查比较方便迅速的特点,缺点则是如果索引被删除后的空间不能重复利用,为了提高性能,通常要经常重建索引。

9.   Omega附带了OmindexScriptIndex这两个索引生成工具,可以将硬盘上的htmlpdf,图片甚至视频影片索引起来并生成Database,通过操作这些由OmindexScriptIndex生成的DatabaseOmega提供了搜索这些文件的功能。

10. Xapian中,索引通常比被索引的documents还要多,这表示Xapian做一个信息检索系统比做一个信息存储系统更适合。

11. B树的分支因子(即每个结点能容纳的关键字的数量)越大,B树的查找性能就越强;但由于通常情况下,B树的结点都是存储在永久存储系统(例如硬盘/磁带)中,每次访问某个结点都会将整个结点由永久存储系统读入到内存中,这是一个博弈的过程:假设一棵数据量很大的B树,将B树的分支因子设到很大,这棵B树会长得很矮,从理论上来说查找性能可能很高。但这样就带来了一个弊端,每个结点所占的内存非常多,如果在一个并发访问量很大的IR系统中采用这种方式的话所使用的内存必定是非常可观的。因此在调整“.dB”文件的默认块大小的时候一定要充分考虑cpu体系和操作系统平台,以便调整到最佳性能。


12.查询的过程简单来说就是把用户的查询进行分词,再把分词后的结果与索引的文档分词进行比较,返回包括这些词的文档.


13.例如一个数据库有500个文档,其中有50个文档符合定义的问题。系统检索到75个文档,但是只有45个符合定义的问题。

召回率R=45/50=90%

精度P=45/75=60%

 精度:检出文档中相关文档的比例。

召回率:相关文档被检出的比例。

精度和召回率相互矛盾,只能取舍不能调和,由分词策略直接影响。

14.Xapian默认的排序模式称为BM25Weight,这是一种将词频和document等元素出现的频率通过一个固定的公式得出排序权重的模式,权重越高则相关度越高,如果不想使用BM25Weight作为排序模式,可以使用BoolWeight,BoolWeight模式里的各种元素的权重都为0。

15.它支持概率信息检索模型,也支持一组丰富的布尔查询操作符。默认情况下,Xapian可以使用任意组合的复杂的布尔型查询表达式来缩小检索的范围,然后将结果按概率性排序。

16.QueryParser类解析查询字符串生成Query(查询)。

17. Xapian里的所有东西都是用UTF-8来保存的.

 

18.Xapian对于分词的索引不仅仅是存储一个文档所对应的term,还有它的位置信息,词的文档频率,总的频率,这些信息被文档打分器提供文档分数的计算依据.


19.在Xapian中,如果你在索引的时候使用了TermGenerate来进行分词,那在查询的时候一定要使用QueryParser来对查询条件进行解析。

 类似资料: