zoukankan      html  css  js  c++  java
  • Xapian实战(四):搜索

    参考资料:

    学习Xapian(1)-基础的建索引和搜索

    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

     1 // 创建待搜索数据库
     2 Xapian::Database searchdb;
     3 searchdb.add_database(dba);
     4 searchdb.add_database(dbb);
     5 
     6 // 生成查询会话
     7 Xapian::Enquire enquire(searchdb);
     8 
     9 // 解析待查找字符串
    10 Xapian::QueryParser qp;
    11 qp.set_database(searchdb);
    12 qp.set_stemming_strategy(Xapian::QueryParser::STEM_NONE);
    13 Xapian::Query query = qp.parse_query("待查找字符串");
    14 
    15 // 将解析后的字符串加入会话
    16 enquire.set_query(query);
    17 
    18 //得到查询结果
    19 Xapian::MSet matches = enquire.get_mset(0, 10); // 显示前10个结果
    20 
    21 // 显示结果
    22 for (Xapian::MSetIterator idx = matches.begin(); idx != matches.end(); ++idx) {
    23     std::cout << idx.get_rank()+1 << ":" 
    24                   << idx.get_percent() << "% docid = " << *idx 
    25                   << " [" << i.get_document().get_data() << " ]" 
    26                   << std::endl << std::endl;
    27 }
    View Code
  • 相关阅读:
    使用Python操作MySQL数据库
    SQL server数据库语句
    SQL server数据库
    实施工程师
    Vue外卖项目
    每日思考记录(12)
    Vue核心知识点
    jQuery快速入门
    js
    css2
  • 原文地址:https://www.cnblogs.com/tanfy/p/5785289.html
Copyright © 2011-2022 走看看