您的位置:首页 > 编程语言 > C语言/C++

[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;
}

测试结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: