- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
书目个信息检索
书目信息检索
信息检索是计算机应用中的重要领域之一。信息检索中至关重要的问题是,如何提高在磁盘上查询特定信息的效率。解决该问题的重要手段之一是:建立一个好的索引系统;
图书馆检索系统中需要建立三个索引表,分别按书名、作者名、分类号进行索引。在此仅要求实现“书名关键词索引” 。
一 词索引表的建立
已知书目文件BookInfo.txt内容如下:
005 Computer Data Structures
010 Introduction to Data Structures
023 Fundamentals of Data Structures
034 The Design and Analysis of Computer Algorithms
050 Introduction to Numerical Analysis
067 Numerical Analysis
现要求建立书名关键词索引表。
问题分析:
1、首先将BookInfo.txt中每种书的书号和书名关键词提取出来:书号存放于BookNo,书名中的关键词先临时存放于全局变量wdlist中:
typedef struct
{
char *item[MaxNoIdx]; /* 词表(字符串)指针数组 */
int last; /* 词的数量 */
}WordListType; /* 一个书目的词表(顺序表)和非索引词表(有序表)共用类型 */
提取书名关键词时注意剔除the\a\of等非索引词(将非索引词存入Noidx.txt中),
Noidx.txt内容如下:
5
A
An
In
Of
The
程序将Noidx.txt的内容读入全局变量nodix(wdlist)中。对于书名中的每个单词,首先检索是否出现在nodix,如果是则不插入wdlist中作为关键词,如果不是则插入;
2、程序依次根据临时存于wdlist中的每个书名关键词,产生和充实关键词索引表:首先建一个空的索引表变量idxlist,然后依次查询wdlist中的各个关键词是否存在于idxlist中,如果存在,则仅把关键词的书号按升序插入相应的链表中,否则先按字母顺序将wdlist中的关键词插入idxlist,再插入书号。Idxlist的结构如下:
typedef struct
{
HString key; /* 关键词(堆分配类型,c4-2.h) */
LinkList bnolist; /* 存放书号索引的链表(c2-5.h) */
}IdxTermType; /* 索引项类型 */
3、书名关键词索引表仅在增加新书时变化,因此不必每次检索时都建立一次。可把生成的书名关键词索引表idxlist存成文件BookIdx.txt,由索引查询程序调用。
数据结构(数学模型)
#define MaxKeyNum 25 /* 索引表的最大容量(关键词的最大数目) */
#define MaxLineLen 52 /* 书目串(书目文件的1行)buf的最大长度 */
#define MaxNoIdx 10 /* 非索引词(也是一个书目中关键词)的最大数目 */
typedef struct
{
char *item[MaxNoIdx]; /* 词表(字符串)指针数组 */
int last; /* 词的数量 */
}WordListType; /* 一个书目的词表(顺序表)和非索引词表(有序表)共用类型 */
typedef struct
{
HString key; /* 关键词(堆分配类型,c4-2.h) */
LinkList bnolist; /* 存放书号索引的链表(c2-5.h) */
}IdxTermType; /* 索引项类型 */
typedef struct
{
IdxTermType item[MaxKeyNum+1]; /* 索引项数组类型 */
int last; /* 关键词的个数 */
}IdxListType; /* 索引表类型(有序表) */
/* 全局变量 */
char buf[MaxLineLen+1]; /* 当前书目串(包括\0) */
WordListType wdlist,noidx; /* 暂存一种书的词表,非索引词表 */
二、书目查询
根据书名关键词索引表文件BookIdx.txt查询图书
将书名关键词索引表文件BookIdx.txt 的内容复制到变量idxlist中;(关键词小写)
再将书目文件BookInfo.txt 的内容存放到booklist中;
程序运行时,从键盘输入一个书名关键词,并将其转换为小写,在idxlist中查找,如果
原创力文档


文档评论(0)