搜索引擎主要涉及两类操作操作:建立索引和查询。下面介绍xapian下这两种操作的大概流程:
一、建立索引流程
1、使用Xapian::WritableDatabase创建或以读写方式打开数据库。
2、创建Document对象。
1)通过两种方法向Docment对象中写入数据:
a)使用.set_data(string)设置负载数据,每个文档有且只能有一个负载数据
b)使用.add_value(slot, string)设置slot指定的数值,如果slot中已存在数值,将进行替换。每个文档可以有多个数值。
2)建立索引(两种方法)
a)Document.add_term(word, pos)。
b)构造Xapian::TermGenerator对象,通过set_document()关联文档对象,然后通过index_text方法建立文本索引。(用空格分开的字符串)。
3、通过DB.add_document(doc)方法将文档与数据库关联。
4、DB.commit()或DB.flush()。
二、检索流程
1、通过Xapian::Database打开数据库。
2、构造Xapian::Enquire,它是检索的接口。
3、使用Xapian:ueryParser解析Query字符串,或使用Xapian:uery构造检索条件。
4、调用enquire.set_query()检索。
5、使用enquire.get_mset(start,len)获取查询结果集MSet。
6、遍历MSet。 |