您的位置:首页 > 其它

一个简单的基于内容的文本文件搜索引擎

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.返回最优文件的路径

运行效果

所要搜索的文件夹



文件内容



启动程序



点击浏览按钮



选择要搜索的文件夹



查找范围显示出路径



输入关键字



点击搜索按钮,弹出最优结果的路径



附上程序(.net framework3.5 required)

Voting For Decision

/*2009.6.15编辑****************************************/

VFD源码下载

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