- 1、本文档共28页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
倒排索引设计公开课PPT.pptx
倒排索引设计
吴凯
2012年6月2日
信息源\网页集合
Query
检索
候选信息\
页面
相关性排序
结果
关键词\Query
基本思路
关键字匹配
好文档至少要包含query中的所有词
分词
清华大学邮编
分词
清华大学
邮编
+
最初的思路
索引查询、归并
Term:
清华大学
倒排
索引
……
索引归并
候选集
目标
生存
能够实现简单的倒排索引建立和检索
发展
针对高性能索引加载的设计
针对高性能索引归并的设计
针对索引压缩的设计
生存篇
第一步:建立词到文档位置的映射关系
…
for (my $i = 0; $i $documentCount; ++$i)
{
my $document = ReadDocument($i);
my $words = WordBreak($document); #分词
my $wordCount = $#$words + 1;
for (my $j = 0; $j $wordCount; ++$j)
{
printf “%s\t%d\t%d\n”, $words-[$j], $i, $j; #建立映射
}
}
…
生存篇
第二步:按照词排序
LC_ALL=C sort -k1,1 -k2,2n -k3,3n
相同词的映射记录被调整到邻近行
相同词的记录,按照文档号从小到大排序
相同词对应的相同文档的记录,按照出现位置从小到大排序
Why?
a 3 5
b 3 1
b 3 2
b 3 5
b 5 0
b 5 1
b 6 3
d 3 4
a 3 5
b 3 1
b 3 2
b 3 5
b 5 0
b 5 1
b 6 3
d 3 4
生存篇
第三步:归并
a 3 5
b 3 1
b 3 2
b 3 5
b 5 0
b 5 1
b 6 3
d 3 4
a 3:5
b 3:1,2,5 5:0,1 6:3
d 3:4
生存篇
第四步:加载索引检索
while (my $line = STDIN)
{
chomp($line);
next unless (length($line) 0);
my @fields = split(/\t/, $line);
my @docs;
for (my $i = 1; $i = $#fields; ++$i)
{
my %doc;
my @cols = split(/:/, $fields[$i]);
my @pos = split(/,/, $cols[1]);
$doc{docId} = $cols[0];
$doc{pos} = \@pos;
push(@docs, \%doc);
}
$index{$fields[0]} = \@docs;
}
my $info = $index{$term};
加载
检索
生存篇
第四步:加载索引检索
$VAR1 = {
a = [
{
docId = 3,
pos = [5 ]
}
],
b = [
{
docId = 3,
pos = [1, 2, 5]
},
{
docId = 5,
pos = [0, 1]
},
(续)
{
docId = 6,
pos = [3]
}
],
d = [
{
docId = 3,
pos = [4]
}
文档评论(0)