小型文本查询引擎的设计与实现
实验要求:
(1)构造二叉查找树
① 从文件中读入内容,过滤掉阿拉伯数字和标点符号,并将英文字母的大写形式
全部转换成小写形式。
② 按照英文字母表的顺序构造英文单词的二叉查找树。当两个英文单词的首字母
相同时,按第二个字母进行排序,依次类推。
③ 为每个英文单词建立一个单链表,用于存放该单词在文档中的位置信息(即:
该单词是文档的第几个单词,序号从1开始)。如果一个单词在文档中出现多次,则该链表中将包含多个结点,并按照单词在文档中出现的次序(位置信息)递增排序。
(2)遍历二叉查找树
① 实现二叉查找树的先序遍历,以便能够找出出现次数最多的单词;
② 查询:输入一个待检索单词,以先序遍历的方式从二叉查找树中查找单词,如
果能找到该单词,则输出该单词在原始文档中出现的位置信息,否则提示文档中不包含该检索词;
③ 实现二叉查找树的中序遍历,并将遍历结果保存到文件中(words.txt)。(要求:
每个单词占一行,每行依次记录单词、该单词出现的次数、以及该单词在文档中的位置信息。)
(3)删除结点
① 给定一个停用词列表(停用词是指对查询没有作用的词,如:of, and, a, an, the
等等),将二叉查找树中的属于停用词表中的单词依次删除(不仅删除结点,还需清空记录该单词位置信息的单链表);
② 在查询时,当输入的查询词是停用词时,则不进行查询。
(4)多关键词查询
① 允许一次输入两个或者更多个单词进行查询,即:先获得这些单词各自在文档中出现的位置信息,然后再分析这些单词的位置信息,判断这些单词在原始文档中是否存在连续出现的情况。
② 在查询时,当输入的查询词包含停用词时,先去除停用词,再进行查询。
传送门:https://pan.baidu.com/s/1JJs9vbZahUCB6cQvXLgAVg?pwd=1111