second_indexr

本文介绍了一个使用Xapian库实现的简单全文搜索引擎示例。该示例演示了如何从多个文本文件中读取数据,并将其索引到Xapian数据库中。通过Xapian的TermGenerator和Stem组件,实现了英文文本的分词和词干提取,从而为后续的搜索查询提供了高效的基础。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



#include<iostream>

#include<xapian.h>

#include<vector>

#include<string>

#include<fstream>

using namespace std;

 

int main(int argc , char **argv){

 

 try{

   Xapian::WritableDatabase  database(argv[1],Xapian::DB_CREATE_OR_OPEN);

   //分词器

   Xapian::TermGenerator  indexer;

   Xapian::Stem  stemmer("english");

   indexer.set_stemmer(stemmer);

   

   Xapian::Document doc1,doc2,doc3,doc4,doc5;

 

   vector<Xapian::Document>doc = {doc1,doc2,doc3,doc4,doc5};

 

 

   vector<string>path1 ={"/usr/local/txtdata/txt1","/usr/local/txtdata/txt2","/usr/local/txtdata/txt3","/usr/local/txtdata/txt4","/usr/local/txtdata/txt5"};

   string s;

   string data;

   int i = 0;

   for(auto&p : path1){

      ifstream  ifile(p);

      while(getline(ifile,s))

          data =data + s;

      cout<<"dayingdata: "<<data<<endl;

      doc[i].set_data(data);

      indexer.set_document(doc[i]);

      indexer.index_text(data);

      database.add_document(doc[i++]);

      s.resize(0);

      

      }

   database.commit();

 

 

   for(auto i=0; i!= 5 ; ++i){

      cout<<"["<<doc[i].get_data()<<"]"<<"\n"<<endl;}

      }catch(const Xapian::Error &error){

      cout<<"exception:"<<error.get_msg()<<endl;}

   }  

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值