Xapian实战(四):搜索
2024-09-07 18:35:46
参考资料:
1. Xapian中用于搜索的类
Enquire - 提供了检索的接口;(Enquire API)
QueryParser(QueryParser API) - 解析待查找的字符串,返回Query(Query API);
MSet - 用于搜索结果的存储和显示;(MSet API)
2. 实战
@ 检索流程
打开Xapian::Database,数据库中可以使用Database::add_database()函数包含多个索引;
根据database构造Xapian::Enquire,提供检索接口;
创建Xapain::QueryParser,解析待查找的字符串,生成Xapian::Query;
‘利用Enquire对象将解析后的字符串加入查询会话中;
使用Enquire::get_mset()函数返回MSet,得到查询结果;
使用MSetIterator对象对结果进行显示;
@ sample
// 创建待搜索数据库
Xapian::Database searchdb;
searchdb.add_database(dba);
searchdb.add_database(dbb); // 生成查询会话
Xapian::Enquire enquire(searchdb); // 解析待查找字符串
Xapian::QueryParser qp;
qp.set_database(searchdb);
qp.set_stemming_strategy(Xapian::QueryParser::STEM_NONE);
Xapian::Query query = qp.parse_query("待查找字符串"); // 将解析后的字符串加入会话
enquire.set_query(query); //得到查询结果
Xapian::MSet matches = enquire.get_mset(, ); // 显示前10个结果 // 显示结果
for (Xapian::MSetIterator idx = matches.begin(); idx != matches.end(); ++idx) {
std::cout << idx.get_rank()+ << ":"
<< idx.get_percent() << "% docid = " << *idx
<< " [" << i.get_document().get_data() << " ]"
<< std::endl << std::endl;
}
最新文章
- android--asp.net webservice 返回json
- MySQL的相关设置
- c#问答篇:对象与引用变量-----初学者的困惑
- HTML入门教程(全套)
- xxx is not in the sudoers file. This incident will be reported的解决方法
- Scala分号推断
- 归并排序——Merge Sort
- caffe深度学习进行迭代的时候loss曲线开始震荡原因
- 移动硬盘插到台式机,外接网卡无法连接wifi处理
- RocketMQ 事务消息
- GDKOI2018发烧记
- nyoj 1238(BFSor最短路)
- Delphi Berlin 窗体代码分离风格 回到Delphi7传统风格
- DateFormat工具类
- leetCode题解之寻找一个数在有序数组中的范围Search for a Range
- 论C语言中二级指针和二维数组之间的区别
- [转]js清除所有cookies
- 递归中traverse小人 &; dc女王的区别
- 【第七章】MySQL数据库备份-物理备份
- HihoCoder 1044 垃圾清理 (优化:状态压缩)