[C++]简单即敲即得系统(基于Trie树)
2009-12-01 10:28
274 查看
这几日实现了一个基于Trie树的简单即敲即得系统,数据库为MySql,测试数据为380万条记录。输入数据为utf-8格式,在Trie树节点中保存的是wchar类型的字符,因为一个汉字需要2个字节的长度,如果使用char类型就必须将一个汉字拆成两个节点来保存,这样以后要做模糊搜索什么的就比较麻烦。
工程共包含5个代码文件,分别如下:
代码#include "TypeAheadSearch.h"
#include <iostream>
#include <vector>
using namespace std;
const char user[] = "root"; // username
const char pswd[] = "root"; // password
const char host[] = "localhost"; // or"127.0.0.1"
const char db[] = "database_name"; // database
const char table[] = "table_name"; // database
void testCase(char* query)
{
// create index
TypeAheadSearch* tas = new TypeAheadSearch();
if (!tas->createIndex(user,pswd,host,db,table)) printf("Create Index Error!\n");
int topk=100; // max number of result
vector<unsigned int> results;
if (tas->search(query,topk,results))
{
printf("number of results: %d\n",results.size());
if (topk>results.size())
topk=results.size();
for (int i=0;i<topk;i++)
printf("%u\n",results[i]);
}
else
printf("Search Error!\n");
}
int main()
{
testCase("querys");
return 0;
}
测试结果:
工程共包含5个代码文件,分别如下:
代码#include "TypeAheadSearch.h"
#include <iostream>
#include <vector>
using namespace std;
const char user[] = "root"; // username
const char pswd[] = "root"; // password
const char host[] = "localhost"; // or"127.0.0.1"
const char db[] = "database_name"; // database
const char table[] = "table_name"; // database
void testCase(char* query)
{
// create index
TypeAheadSearch* tas = new TypeAheadSearch();
if (!tas->createIndex(user,pswd,host,db,table)) printf("Create Index Error!\n");
int topk=100; // max number of result
vector<unsigned int> results;
if (tas->search(query,topk,results))
{
printf("number of results: %d\n",results.size());
if (topk>results.size())
topk=results.size();
for (int i=0;i<topk;i++)
printf("%u\n",results[i]);
}
else
printf("Search Error!\n");
}
int main()
{
testCase("querys");
return 0;
}
测试结果:
相关文章推荐
- 基于jsp+servlet实现的简单博客系统实例(附源码)
- 基于javascript实现简单的抽奖系统
- 基于逻辑运算的简单权限系统(实现) JS 版
- 基于ARM Contex-A8 Tiny210的简单室内人员数目监测系统实现(1)
- 基于RFC6265 (HTTP状态管理协议)实现简单的登录系统
- 使用C++构建最简单的动态类型系统
- 我的第三十三个C++上机报告(简单的银行系统)
- [论文]基于C++的虚拟机构造技术及其编译系统的研究与设计 (小型篇)
- 基于C++与Opencv制作的简单马里奥游戏
- C++模板实现动态顺序表(更深层次的深浅拷贝)与基于顺序表的简单栈的实现
- 基于逻辑运算的简单权限系统(原理,设计,实现) VBS 版
- C++的大作业,简单学生管理系统
- 一个基于PXA255嵌入式系统的简单24位图片读取输出程序
- 基于Fundation框架的简单管理系统
- 自己用c++写的简单成绩管理系统框架
- 一个简单的基于用户的推荐系统+缓存机制
- 自己建立最简单的系统(基于ok6410的)
- 基于ThinkPHP框架的简单的后台管理系统
- java(12)--小应用-基于xml的简单考试查询系统
- 简单的c++图书管理系统