Xapian索引-文档检索过程分析之匹配百分比
本文属于文档检索过程分析的一部分,重点分析文档匹配百分比(percent)的计算过程。1percent是什么?我们之前分析的检索demo:Xapian::Queryterm_one=Xapian::Query("T世界");Xapian::Queryterm_two=Xapian::Query("T
xapian搜索系统存储结构解读
Xapian的database是所有用于检索的信息表的集合,以下的表是必需的:postinglisttable保存了被每一个term索引的document,实际上保存的应该是document在database中的Id,此Id是唯一的。这个就是倒排表。recordtable保存了每一个document
利用Xapian构建自己的搜索引擎:Database
在Xapian1.0之前,是使用quartz作为database文件格式的,不过自从1.0之后,便改用Flint作为database的文件格式了。有时候,我们会将database称为“索引”,在Xapian中,索引通常比被索引的documents还要多,这表示Xapian做一个信息检索系统比做一个信
大数据下xapian建索引速度问题可能的解决方案以及索引数据的压缩处理
xapian索引速度解决方案:第一种方案:vi/etc/profile添加一行exportXAPIAN_FLUSH_THRESHOLD=280000(默认是10000)source/etc/profile使修改对当前命令行生效echo$XAPIAN_FLUSH_THRESHOLD一下查看是否生效第二
学习Xapian(3) – 同义词的查询拓展
Xapian支持同义词的查询拓展。按照同义词进行拓展算是查询拓展最基本的一种方式。比如“汽车展览”和“车展”是同义词,我们搜索汽车展览的时候,也会把“车展”的结果返回。很多人认为这个就是拼写校正,但实际它比拼写校正稍微高级点,特别是放在Xapian的语境下,毕竟拼写校正是基于编辑距离而不是语义的。1
学习Xapian(2) – 拼写校正
Xapian提供了拼写校正功能,其基本算法就是编辑距离,只不过它支持UTF-8,也就是说是支持中文的。1、建立拼写校正辞典虽然编辑距离的算法很土很原始,但是Xapian提供了方便的接口建立辞典,至少有如下两种方式:(1)Xapian::WritableDatabase.db.add_spelling
xapian安装使用
官方网站:http://xapian.org/xapian作为全文搜索引擎,分为三大模块:indexer(索引)databases(数据库管理)searcher(搜索)包含在以下类:xapian::WriteDatabasexapian::documentxapian::databasexapian
xapian简介<四>
1.xapian基本概念开篇先聊点相关的基本概念,再说xapian。1.1IR信息检索(InformationRetrieval)在信息检索(IR)中,我们企图要获取的项称之为“document”,每一个document是被一个terms集合所描述的。“document”和“term”这两个词汇是I
Xapian 学习笔记 3 相关字段的排序
Xapian学习笔记3相关字段的排序在Xapina中,命中文档的排序是以文档的相关度降序来做的,当两个文档的相关度一样时,按文档id的升序来做,你也可以通过设置enquire.set_docid_order(enquire.DESCENDING)来把其变成降序,或者设置成不关心文档id的排序enqu
xapian简介<五>
1.Xapian之数据写下面我给出xapian最简单的数据写的例子,以这个例子,我们走完数据写的流程。voidWriteDB::init(XapianType::Document&tmp){undefinedXapian::DocumentdocTmp;docTmp.add_value(0,
XAPIAN简介(二)
我写这篇文章主要侧重于XAPIAN源代码代码的研究。我会一点点跟大家分享我分析的XAPIAN的几个主要类。本篇文章跟大家讨论的是Xapian::compactor类,这个类主要用于数据库的压缩数据,具体用法看官方API(https://xapian.org/docs/apidoc/html/anno
Xapian的内存索引-添加文档
本文主要记录Xapian的内存索引在添加文档过程中,做了哪些事情。内容主要为函数执行过程中的流水线。demo代码:Xapian::WritableDatabasedb=Xapian::InMemory::open();Xapian::Documentdoc;//添加文档的,T表示字段名字,TERM内
Xapian的内存索引
xapian除了提供用于生产环境的磁盘索引,也提供了内存索引(InMemoryDatabase)。内存索引。我们可以通过观察内存索引的设计,来了解xapian的设计思路。1用途官方文档说法:“inmemory,Thistypeisadatabaseheldentirelyinmemory.Itwas
XAPIAN简介(三)
今天主要介绍的是Xapian::Database这个类。先上图看上去就很恐怖的吧,我们一点点的说。首先一切的开始都来自那个include文件夹中的database.h,他的直接实现是在omdatabase.cc中,此外在common文件夹中还有一个database.h这个文件是DataBase的私有
Xapian索引-文档检索过程分析
本文是Xapian检索过程的分析,本文内容中源码比较多。检索过程,总的来说就是拉取倒排链,取得合法doc,然后做打分排序的过程。1理论分析1.1检索语法面对不同的检索业务,我们会有多种检索需求,譬如:要求Aterm和Bterm都在Doc中出现;要求Aterm或者Bterm任意在Doc中出现;要求At
C++搜索引擎—Xapian中文简介
个人翻译,如有漏缺、错误,欢迎批评指正,仅供参考。官方主页对Xapian的介绍Xapian是在GPL下发布的开源搜索引擎库。它是用C++语言编写的,除了提供原生的C++编程接口之外,允许使用Perl、Python、PHP、Java、Tcl、C#、Ruby,Lua,Erlang和Node.js绑定(到
xapian_使用Xapian和Omega读取文档并建立索引
Xapian基础Xapian和Omega是独立的组件,旨在共同提供索引和搜索功能。Xapian组件提供了数据库功能(用于存储信息)的核心,以及用于查找单词和单词组合的搜索和检索系统(请参阅参考资料)。Omega组件提供了将信息从各种格式转换和解析为Xapian所需的原始文本的工具,以便可以对其进行索
Xapian使用入门
一篇拖了两三年的入门总结文章,今天发出来,一方面是自己的总结,另一方面是给自己和他人的备忘。读者需要对搜索引擎有初步了解,譬如了解倒排、term、doc、相似度打分等概念。Xapian是一个C++搜索引擎内核,提供了类似Lucene的功能,功能没有Lucene丰富,但可以满足常见的搜索需求:倒排检索
对全文检索引擎xapian的学习(一)---索引
xapian的文档不算丰富,但也够用了.特别是xapian配套的omega项目,是一个使用xapian和学习xapian的宝库.先说两个重要的概念,termlist和postinglist.termlist索引了一个文档,每一个document都对应一个termlist.postinglist列出了
xapian简介<六>
Xapian之数据读Xapian数据查找的最基本的步骤的伪代码,我以此为例来简单的说下xapian的数据查找。Xapian::Databasedb(STR_PATH);Xapian::Enquireenquire(db);enquire.set_query(Xapian::Query::MatchA