鱼C论坛

 找回密码
 立即注册
查看: 3047|回复: 0

用C语言或者C++写一个简单的倒排索引?

[复制链接]
发表于 2014-6-23 09:48:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
倒排索引是搜索引擎中一个很基本的概念,几乎所有的搜索引擎都会使用到倒排索引。简单地说,倒排索引就是将文件中的单词作为关键字,然后建立单词与文件的映射关系,同时还需要记录文件中单词出现的频数等信息。
    建立倒排索引的过程,需要对文件进行顺序的扫描,在这个过程中,我们一般还会统计一下词的分布情况,比如想知道频次排名第X的词(如果两个词的词频相同,则按照字母顺序排序)会出现多少次? 为方便实现,首先以简单的键盘输入形式逐行输入文件的内容,实现基本的功能之后,再将输入方式改成从文本文件中读取。
例如:输入
第一行:需要查询的单词W
第二行:文本的总行数N
第三行:频次排名R
剩下为文本(每个单词之间靠空格隔开)
输出
第一行输出该词所在的行数序号(多个的话,按照从小到大排序输出,中间空格隔开,序号从一开始记),如果没有出现,输出 -1
第二行输出频次排名R的单词出现的次数。

[测试数据]
输入为:
I
4
3
I am a student .
I live in Beijing and I love Bejing
I also love travelling, life in there
Beijing is beautiful

输出为:
1 2 3
2
[实现提示]
可以用如下格式作为输入输出形式:
输入
第一行需要查询的单词W
第二行文本的总行数N
第三行频次排名R
剩下为文本(每个单词之间靠空格隔开)
输出
第一行输出该词所在的行数序号(多个的话,按照从小到大排序输出,中间空格隔开,序号从一开始记),如果没有出现,输出 -1
第二行输出频次排名R的单词出现的次数。
测试数据中的词频的分布如下,可见,排名第3的词,出现的次数为2
I,4
Beijing,2
in,2
love,2
.,1
Bejing,1
a,1
also,1
am,1
and,1
beautiful,1
is,1
life,1
live,1
student,1
there,1
travelling,1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-28 04:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表