一个简单的基于内容的文本文件搜索引擎
2009-06-05 21:55
169 查看
才来博客园不久,不知道这里的气氛如何。
先发一个学生作业,当作是第一篇文章吧。
这个项目一共费时4天时间,主要是实现如下需求。
实现几个独立的搜索引擎,期中包括对文本文件中文本的扫描,计算文件和关键词组的接近程度。每个搜索引擎采用不同的做法,属于独立线程。
有图形界面,form。
有一个投票模块,根据不同搜索引擎得到的结果进行投票,返回多数支持的结果,要求总能得到多数支持的结果。
最后打开结果文件。
本项目主要采用了如下的一个架构方案
<?xml version="1.0"?>
2<doc>
3 <assembly>
4 <name>SearchEngin</name>
5 </assembly>
6 <members>
7 <member name="T:VotingForDecision090603.SearchEngin">
8 <summary>
9 该类主要工作:实例化各个搜索类,执行搜索逻辑,调用Voting类处理搜索结果,将其返回值返回给界面
10 </summary>
11 </member>
12 <member name="F:VotingForDecision090603.SearchEngin.Amount">
13 <summary>
14 引擎数量
15 </summary>
16 </member>
17 <member name="F:VotingForDecision090603.SearchEngin.eal">
18 <summary>
19 引擎的命名列表
20 </summary>
21 </member>
22 <member name="M:VotingForDecision090603.SearchEngin.#ctor">
23 <summary>
24 SearchEngin类
25 主要工作,执行各个Search子类逻辑,并将子类搜索结果进行统计并返回
26 </summary>
27 </member>
28 <member name="M:VotingForDecision090603.SearchEngin.Run">
29 <summary>
30 执行引擎逻辑:
31 1.使用引擎集合里面的搜索引擎,分别判断所有文件与关键词的接近程度
32 2.将各种结果进行投票,选出最优结果
33 </summary>
34 <returns>
35 bestfile:string
36 最优结果的文件路径和文件名
37 </returns>
38 </member>
39 <member name="T:VotingForDecision090603.Search">
40 <summary>
41 各种搜索引擎的基类,它们应该继承此基类
42 </summary>
43 </member>
44 <member name="F:VotingForDecision090603.Search.path">
45 <summary>
46 文件路径
47 </summary>
48 </member>
49 <member name="F:VotingForDecision090603.Search.scb">
50 <summary>
51 回调函数
52 </summary>
53 </member>
54 <member name="F:VotingForDecision090603.Search.cbo">
55 <summary>
56 回调类型
57 </summary>
58 </member>
59 <member name="F:VotingForDecision090603.Search.goal">
60 <summary>
61 评分标准
62 </summary>
63 </member>
64 <member name="M:VotingForDecision090603.Search.#ctor(System.String,VotingForDecision090603.SearchCallBack)">
65 <summary>
66 初始化私有字段
67 </summary>
68 <param name="p">文件路径</param>
69 <param name="s">回调函数</param>
70 </member>
71 <member name="M:VotingForDecision090603.Search.Do">
72 <summary>
73 开始搜索,并执行回调函数,将搜索结果返回,子类将继承此函数
74 </summary>
75 </member>
76 <member name="M:VotingForDecision090603.Search.Compare">
77 <summary>
78 搜索逻辑,由子类重写实现
79 </summary>
80 </member>
81 <member name="T:VotingForDecision090603.Search1">
82 <summary>
83 1号搜索引擎
84 主要实现逻辑:
85 1.读入文件,遍历文件内容
86 2.如果某字符与关键字某字符匹配,则递归比较下一字符,否则执行加权操作,并返回
87 3.将权值返回给回调函数
88 </summary>
89 </member>
90 <member name="T:VotingForDecision090603.Search2">
91 <summary>
92 2号搜索引擎
93 主要实现逻辑:
94 1.读入文件
95 2.比较文件内容的哈希值与关键字的哈希值,并将其归1化
96 3.将权值返回给回调函数
97 </summary>
98 </member>
99 <member name="T:VotingForDecision090603.Search3">
100 <summary>
101 3号搜索引擎
102 主要实现逻辑:
103 1.读入文件
104 2.使用BM算法比较文件内容与关键字的匹配程度,并进行加权操作
105 3.将权值返回给回调函数
106 </summary>
107 </member>
108 <member name="T:VotingForDecision090603.Search4">
109 <summary>
110 4号搜索引擎
111 </summary>
112 </member>
113 <member name="T:VotingForDecision090603.Vote">
114 <summary>
115 该类主要工作是完成投票统计,并总是返回一个多数支持的结果
116 </summary>
117 </member>
118 <member name="M:VotingForDecision090603.Vote.#ctor(System.Collections.Generic.List{VotingForDecision090603.CallBackObject})">
119 <summary>
120 初始化各类字段
121 </summary>
122 <param name="li">传入的一个CallBackObject类型的List</param>
123 </member>
124 <member name="M:VotingForDecision090603.Vote.Analysis">
125 <summary>
126 主要逻辑:
127 1.将引擎的搜索结果按照引擎类型进行分类
128 2.得出每种分类的排序结果
129 3.将每种结果的最优值进行统计,得出多数支持的最优值
130 4.返回最优文件的路径
131 </summary>
132 <returns>返回多数支持的结果</returns>
133 </member>
134 </members>
135</doc>
136
投票类的主要逻辑:
1.将引擎的搜索结果按照引擎类型进行分类
2.得出每种分类的排序结果
3.将每种结果的最优值进行统计,得出多数支持的最优值
4.返回最优文件的路径
运行效果
所要搜索的文件夹
![](http://images.cnblogs.com/cnblogs_com/cwblaze/%E6%9C%AA%E5%91%BD%E5%90%8D7.jpg)
文件内容
![](http://images.cnblogs.com/cnblogs_com/cwblaze/%E6%9C%AA%E5%91%BD%E5%90%8D8.jpg)
启动程序
![](http://images.cnblogs.com/cnblogs_com/cwblaze/%E6%9C%AA%E5%91%BD%E5%90%8D1.jpg)
点击浏览按钮
![](http://images.cnblogs.com/cnblogs_com/cwblaze/%E6%9C%AA%E5%91%BD%E5%90%8D2.jpg)
选择要搜索的文件夹
![](http://images.cnblogs.com/cnblogs_com/cwblaze/%E6%9C%AA%E5%91%BD%E5%90%8D3.jpg)
查找范围显示出路径
![](http://images.cnblogs.com/cnblogs_com/cwblaze/%E6%9C%AA%E5%91%BD%E5%90%8D4.jpg)
输入关键字
![](http://images.cnblogs.com/cnblogs_com/cwblaze/%E6%9C%AA%E5%91%BD%E5%90%8D5.jpg)
点击搜索按钮,弹出最优结果的路径
![](http://images.cnblogs.com/cnblogs_com/cwblaze/%E6%9C%AA%E5%91%BD%E5%90%8D6.jpg)
附上程序(.net framework3.5 required)
Voting For Decision
/*2009.6.15编辑****************************************/
VFD源码下载
/****************************************************/
先发一个学生作业,当作是第一篇文章吧。
这个项目一共费时4天时间,主要是实现如下需求。
实现几个独立的搜索引擎,期中包括对文本文件中文本的扫描,计算文件和关键词组的接近程度。每个搜索引擎采用不同的做法,属于独立线程。
有图形界面,form。
有一个投票模块,根据不同搜索引擎得到的结果进行投票,返回多数支持的结果,要求总能得到多数支持的结果。
最后打开结果文件。
本项目主要采用了如下的一个架构方案
<?xml version="1.0"?>
2<doc>
3 <assembly>
4 <name>SearchEngin</name>
5 </assembly>
6 <members>
7 <member name="T:VotingForDecision090603.SearchEngin">
8 <summary>
9 该类主要工作:实例化各个搜索类,执行搜索逻辑,调用Voting类处理搜索结果,将其返回值返回给界面
10 </summary>
11 </member>
12 <member name="F:VotingForDecision090603.SearchEngin.Amount">
13 <summary>
14 引擎数量
15 </summary>
16 </member>
17 <member name="F:VotingForDecision090603.SearchEngin.eal">
18 <summary>
19 引擎的命名列表
20 </summary>
21 </member>
22 <member name="M:VotingForDecision090603.SearchEngin.#ctor">
23 <summary>
24 SearchEngin类
25 主要工作,执行各个Search子类逻辑,并将子类搜索结果进行统计并返回
26 </summary>
27 </member>
28 <member name="M:VotingForDecision090603.SearchEngin.Run">
29 <summary>
30 执行引擎逻辑:
31 1.使用引擎集合里面的搜索引擎,分别判断所有文件与关键词的接近程度
32 2.将各种结果进行投票,选出最优结果
33 </summary>
34 <returns>
35 bestfile:string
36 最优结果的文件路径和文件名
37 </returns>
38 </member>
39 <member name="T:VotingForDecision090603.Search">
40 <summary>
41 各种搜索引擎的基类,它们应该继承此基类
42 </summary>
43 </member>
44 <member name="F:VotingForDecision090603.Search.path">
45 <summary>
46 文件路径
47 </summary>
48 </member>
49 <member name="F:VotingForDecision090603.Search.scb">
50 <summary>
51 回调函数
52 </summary>
53 </member>
54 <member name="F:VotingForDecision090603.Search.cbo">
55 <summary>
56 回调类型
57 </summary>
58 </member>
59 <member name="F:VotingForDecision090603.Search.goal">
60 <summary>
61 评分标准
62 </summary>
63 </member>
64 <member name="M:VotingForDecision090603.Search.#ctor(System.String,VotingForDecision090603.SearchCallBack)">
65 <summary>
66 初始化私有字段
67 </summary>
68 <param name="p">文件路径</param>
69 <param name="s">回调函数</param>
70 </member>
71 <member name="M:VotingForDecision090603.Search.Do">
72 <summary>
73 开始搜索,并执行回调函数,将搜索结果返回,子类将继承此函数
74 </summary>
75 </member>
76 <member name="M:VotingForDecision090603.Search.Compare">
77 <summary>
78 搜索逻辑,由子类重写实现
79 </summary>
80 </member>
81 <member name="T:VotingForDecision090603.Search1">
82 <summary>
83 1号搜索引擎
84 主要实现逻辑:
85 1.读入文件,遍历文件内容
86 2.如果某字符与关键字某字符匹配,则递归比较下一字符,否则执行加权操作,并返回
87 3.将权值返回给回调函数
88 </summary>
89 </member>
90 <member name="T:VotingForDecision090603.Search2">
91 <summary>
92 2号搜索引擎
93 主要实现逻辑:
94 1.读入文件
95 2.比较文件内容的哈希值与关键字的哈希值,并将其归1化
96 3.将权值返回给回调函数
97 </summary>
98 </member>
99 <member name="T:VotingForDecision090603.Search3">
100 <summary>
101 3号搜索引擎
102 主要实现逻辑:
103 1.读入文件
104 2.使用BM算法比较文件内容与关键字的匹配程度,并进行加权操作
105 3.将权值返回给回调函数
106 </summary>
107 </member>
108 <member name="T:VotingForDecision090603.Search4">
109 <summary>
110 4号搜索引擎
111 </summary>
112 </member>
113 <member name="T:VotingForDecision090603.Vote">
114 <summary>
115 该类主要工作是完成投票统计,并总是返回一个多数支持的结果
116 </summary>
117 </member>
118 <member name="M:VotingForDecision090603.Vote.#ctor(System.Collections.Generic.List{VotingForDecision090603.CallBackObject})">
119 <summary>
120 初始化各类字段
121 </summary>
122 <param name="li">传入的一个CallBackObject类型的List</param>
123 </member>
124 <member name="M:VotingForDecision090603.Vote.Analysis">
125 <summary>
126 主要逻辑:
127 1.将引擎的搜索结果按照引擎类型进行分类
128 2.得出每种分类的排序结果
129 3.将每种结果的最优值进行统计,得出多数支持的最优值
130 4.返回最优文件的路径
131 </summary>
132 <returns>返回多数支持的结果</returns>
133 </member>
134 </members>
135</doc>
136
投票类的主要逻辑:
1.将引擎的搜索结果按照引擎类型进行分类
2.得出每种分类的排序结果
3.将每种结果的最优值进行统计,得出多数支持的最优值
4.返回最优文件的路径
运行效果
所要搜索的文件夹
![](http://images.cnblogs.com/cnblogs_com/cwblaze/%E6%9C%AA%E5%91%BD%E5%90%8D7.jpg)
文件内容
![](http://images.cnblogs.com/cnblogs_com/cwblaze/%E6%9C%AA%E5%91%BD%E5%90%8D8.jpg)
启动程序
![](http://images.cnblogs.com/cnblogs_com/cwblaze/%E6%9C%AA%E5%91%BD%E5%90%8D1.jpg)
点击浏览按钮
![](http://images.cnblogs.com/cnblogs_com/cwblaze/%E6%9C%AA%E5%91%BD%E5%90%8D2.jpg)
选择要搜索的文件夹
![](http://images.cnblogs.com/cnblogs_com/cwblaze/%E6%9C%AA%E5%91%BD%E5%90%8D3.jpg)
查找范围显示出路径
![](http://images.cnblogs.com/cnblogs_com/cwblaze/%E6%9C%AA%E5%91%BD%E5%90%8D4.jpg)
输入关键字
![](http://images.cnblogs.com/cnblogs_com/cwblaze/%E6%9C%AA%E5%91%BD%E5%90%8D5.jpg)
点击搜索按钮,弹出最优结果的路径
![](http://images.cnblogs.com/cnblogs_com/cwblaze/%E6%9C%AA%E5%91%BD%E5%90%8D6.jpg)
附上程序(.net framework3.5 required)
Voting For Decision
/*2009.6.15编辑****************************************/
VFD源码下载
/****************************************************/
相关文章推荐
- 一个简单的基于内容的推荐算法
- 一个简单的基于内容的推荐算法
- 一个简单的基于编辑距离的英文单词查错(Python) - Muilpin.Miao的日志 - 网易博客
- 基于Xposed的一个简单Hook
- 基于MFC的OpenGL的一个简单例子
- 利用Compass实现一个简单的搜索引擎
- [转载] STL allocator的介绍和一个基于malloc/free的allocator的简单实现
- 一个简单的MVC框架的实现-基于注解的实现
- 一个简单基于RabbitMQ的RPC(远程调用模型)
- 基于Vue2.0+Vue-router构建一个简单的单页应用
- 把一个内容为16进制 的文本文件,转换成10进制的文本文件
- 基于ES6测试一个字符由两个字节还是由四个字节组成的最简单方法
- 【原创】一个基于简单剪枝的DFS解数独程序
- springMVC用法 以及一个简单的基于springMVC hibernate spring的配置
- 一个超级简单的IP地址搜索引擎(Asp.Net)事件代码12行
- 基于Servlet、JSP、JDBC、MySQL的一个简单的用户注册模块(附完整源码)
- 百度搜索引擎和必应搜索引擎搜索内容简单爬取Python
- 基于php的一个最简单的memcache的分布式算法
- 基于HOST宿主机制作一个简单的可启动的Linux
- 做一个在后台显示的内容的简单模块