`
easyhaohao
  • 浏览: 13611 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

百度电面-----搜索词汇排名前十------我的灵感。

阅读更多
百度给我同学的一个电面试题,

如何统计 搜索词汇的前十名。

最近看了HASHMAP的源码实现相关文章,

受到启发。

觉得可以用HASHSET实现

将所有关键字记录进HASHSET

关键字类

大概如下


class MyKeyWord
{ 
String keyWord;
int counts;
}



每次counts+1;

并且设定一个阀值VALVE1当超过多少时就将此对象添加进一个

LIST里(此LIST用于记录COUNTS较大的关键字),

对LIST 做排序,排序可以考虑用多线程归并排序

对LIST 也设定一个阀值,当LIST中的元素个数大于阀值时,

提高VALVE1的值,并重新调整删除LIST中阀值小于新阀值的元素。


以上纯属 胡言乱语。。哈哈哈哈
分享到:
评论
17 楼 抛出异常的爱 2011-05-23  
ansjsun 写道
百度没天的搜索词估计有几千万..几个亿..如果用hash我觉得不行啊..java的hash支持大小也就是几十万...我觉得多少需要点人工参与的..人工筛选一个范围...维护一个词表再统计..否则我觉得搜索..为什么..肯定是第一了...

当然如果有能力..可以对当天..搜索top10做一个统计..从中发现新词..然后加入到词表中...


如果对搜索框再次分词的话.
应该还木有几个亿
中文比E文的总词量少些...
16 楼 云中苍月 2011-05-23  
一楼二楼说的是同一个意思。
正解!
15 楼 ansjsun 2011-05-23  
百度没天的搜索词估计有几千万..几个亿..如果用hash我觉得不行啊..java的hash支持大小也就是几十万...我觉得多少需要点人工参与的..人工筛选一个范围...维护一个词表再统计..否则我觉得搜索..为什么..肯定是第一了...

当然如果有能力..可以对当天..搜索top10做一个统计..从中发现新词..然后加入到词表中...

14 楼 jcs7575 2011-05-22  
fflover 写道
easyhaohao 写道
百度给我同学的一个电面试题,

如何统计 搜索词汇的前十名。

最近看了HASHMAP的源码实现相关文章,

受到启发。

觉得可以用HASHSET实现

将所有关键字记录进HASHSET

关键字类

大概如下


class MyKeyWord
{ 
String keyWord;
int counts;
}



每次counts+1;

并且设定一个阀值VALVE1当超过多少时就将此对象添加进一个

LIST里(此LIST用于记录COUNTS较大的关键字),

对LIST 做排序,排序可以考虑用多线程归并排序

对LIST 也设定一个阀值,当LIST中的元素个数大于阀值时,

提高VALVE1的值,并重新调整删除LIST中阀值小于新阀值的元素。


以上纯属 胡言乱语。。哈哈哈哈

说实话感觉不如堆排序,
这个当时我想的是hash+堆排序.但是后来我才知道,其实搜索的时候就像是访问数据库,有一个很大的cache,搜索的时候搜索引擎首先进行分词,然后在查询cache,逻辑组合查询结果,所以我们可以从cache里面选取命中率最高的排序就可以了.. 这样的话可以减少很多不必要的的排序.


这个题目可以延伸的,比如文件超大的情况,就要考虑切分文件,用hash了
13 楼 jcs7575 2011-05-22  
用小顶堆,不是大顶
melanlife 写道
维护一个大顶堆

12 楼 fflover 2011-05-19  
其实我现在倒觉得这个选出十大热门关键字并不是精确的,并没有真正的统计一天的所有结果,而只是统计了cache系统中一段时间中命中率最高的十个关键字,cache系统有自己的替换、淘汰机制。
11 楼 fflover 2011-05-19  
easyhaohao 写道
百度给我同学的一个电面试题,

如何统计 搜索词汇的前十名。

最近看了HASHMAP的源码实现相关文章,

受到启发。

觉得可以用HASHSET实现

将所有关键字记录进HASHSET

关键字类

大概如下


class MyKeyWord
{ 
String keyWord;
int counts;
}



每次counts+1;

并且设定一个阀值VALVE1当超过多少时就将此对象添加进一个

LIST里(此LIST用于记录COUNTS较大的关键字),

对LIST 做排序,排序可以考虑用多线程归并排序

对LIST 也设定一个阀值,当LIST中的元素个数大于阀值时,

提高VALVE1的值,并重新调整删除LIST中阀值小于新阀值的元素。


以上纯属 胡言乱语。。哈哈哈哈

说实话感觉不如堆排序,
这个当时我想的是hash+堆排序.但是后来我才知道,其实搜索的时候就像是访问数据库,有一个很大的cache,搜索的时候搜索引擎首先进行分词,然后在查询cache,逻辑组合查询结果,所以我们可以从cache里面选取命中率最高的排序就可以了.. 这样的话可以减少很多不必要的的排序.
10 楼 easyhaohao 2011-05-19  
<div class="quote_title">LeoChowComtop 写道</div>
<div class="quote_div">
<div class="quote_title">easyhaohao 写道</div>
<div class="quote_div">百度给我同学的一个电面试题,<br><br>如何统计 搜索词汇的前十名。<br><br>最近看了HASHMAP的源码实现相关文章,<br><br>受到启发。<br><br>觉得可以用HASHSET实现<br><br>将所有关键字记录进HASHSET<br><br>关键字类<br><br>大概如下<br><br><pre name="code" class="java">class MyKeyWord
{
String keyWord;
int counts;
}

</pre>
<br><br>每次counts+1;<br><br>并且设定一个阀值VALVE1当超过多少时就将此对象添加进一个<br><br>LIST里(此LIST用于记录COUNTS较大的关键字),<br><br>对LIST 做排序,排序可以考虑用多线程归并排序<br><br>对LIST 也设定一个阀值,当LIST中的元素个数大于阀值时,<br><br>提高VALVE1的值,并重新调整删除LIST中阀值小于新阀值的元素。<br><br><br>以上纯属 胡言乱语。。哈哈哈哈</div>
<p> </p>
<p> </p>
<p> </p>
<p>考察的只是大数据量排序?</p>
<p>我觉的关键点不在这, SE 这么大范围,高并发的被调用,不考虑下资源同步问题,如何保证准确度和效率?</p>
<p>极少跟帖,求赐教</p>
</div>
<p>    额,我只是看了HASHMAP的相关文章然后 胡言乱语的。。<img src="/images/smiles/icon_biggrin.gif" alt=""></p>
9 楼 LeoChowComtop 2011-05-19  
<div class="quote_title">easyhaohao 写道</div>
<div class="quote_div">百度给我同学的一个电面试题,<br><br>如何统计 搜索词汇的前十名。<br><br>最近看了HASHMAP的源码实现相关文章,<br><br>受到启发。<br><br>觉得可以用HASHSET实现<br><br>将所有关键字记录进HASHSET<br><br>关键字类<br><br>大概如下<br><br><pre name="code" class="java">class MyKeyWord
{
String keyWord;
int counts;
}

</pre>
<br><br>每次counts+1;<br><br>并且设定一个阀值VALVE1当超过多少时就将此对象添加进一个<br><br>LIST里(此LIST用于记录COUNTS较大的关键字),<br><br>对LIST 做排序,排序可以考虑用多线程归并排序<br><br>对LIST 也设定一个阀值,当LIST中的元素个数大于阀值时,<br><br>提高VALVE1的值,并重新调整删除LIST中阀值小于新阀值的元素。<br><br><br>以上纯属 胡言乱语。。哈哈哈哈</div>
<p> </p>
<p> </p>
<p> </p>
<p>考察的只是大数据量排序?</p>
<p>我觉的关键点不在这, SE 这么大范围,高并发的被调用,不考虑下资源同步问题,如何保证准确度和效率?</p>
<p>极少跟帖,求赐教</p>
8 楼 shaka 2011-05-19  
晕,看来各大公司这面试题和解决办法也是抄来抄去
7 楼 lwjlaser 2011-05-19  
melanlife 写道
维护一个大顶堆

用反堆了
6 楼 lwjlaser 2011-05-19  
大小为10的最小堆
5 楼 bao231 2011-05-19  
这个场景是否可以用 部分快速排序实现呢,通常如果数据量很大的话,可以考虑部分快速排序。
4 楼 cloud21 2011-05-19  
pouyang 写道
抛出异常的爱 写道
生成一个10个长的MyKeyWord数组
一个第10名点击次数与位置 指针
一个hashBag
每加一个词看一下是否大于第10名点击次数
大于的话放入数组 第10名

之后一次遍历找到点击次数最小的位置与值 修正指针

抛哥说得不错,看了那么多抛哥的回帖,总感觉抛哥的文笔不是很达意,即不是很清晰明了,但说的总是非常正确。

嗯,用MAP最合适了,抛哥说的很明确了,变动位置,整体修正。
3 楼 pouyang 2011-05-18  
抛出异常的爱 写道
生成一个10个长的MyKeyWord数组
一个第10名点击次数与位置 指针
一个hashBag
每加一个词看一下是否大于第10名点击次数
大于的话放入数组 第10名

之后一次遍历找到点击次数最小的位置与值 修正指针

抛哥说得不错,看了那么多抛哥的回帖,总感觉抛哥的文笔不是很达意,即不是很清晰明了,但说的总是非常正确。
2 楼 melanlife 2011-05-18  
维护一个大顶堆
1 楼 抛出异常的爱 2011-05-18  
生成一个10个长的MyKeyWord数组
一个第10名点击次数与位置 指针
一个hashBag
每加一个词看一下是否大于第10名点击次数
大于的话放入数组 第10名

之后一次遍历找到点击次数最小的位置与值 修正指针

相关推荐

    38000词汇思维导图(351-400词根)β版.rar

    标题中的“38000词汇思维导图(351-400词根)β版.rar”表明这是一个关于英语单词学习的资源,特别是针对38000个单词中的一部分,聚焦在词根351到400之间。这种思维导图通常用于帮助学习者理解和记忆大量词汇,通过...

    -----------日语二级词汇--動詞---------------------

    日语二级词汇--動詞---------------------------

    计算机词汇_stardict-kdic-computer-gb-2.4.2.zip

    计算机词汇_stardict-kdic-computer-gb-2.4.2.zip是一个压缩包文件,包含了一个专门针对计算机领域的专业词库。这个词库的主要目的是为了帮助用户在使用金山、有道等流行的电子词典软件时,能获取到更加准确且专业的...

    电子词典--c语言编写

    这个电子词典程序具备了电子词典的基本功能,包括查找、增删、修改和显示词汇及其解释。下面我们将详细探讨这个项目的各个知识点。 ### 1. 问题描述 电子词典程序的目标是创建一个能够存储有限数量(不超过1000条)...

    chinese-bert-wwm-ext.rar

    在原版BERT中,随机选择单词内的部分字符进行掩码,而在wwm策略下,整个词汇被一起掩码,使得模型在训练时更注重语义完整性的理解,有助于提升对中文这种以词为基本单位的语言的处理能力。 哈工大团队的贡献在于,...

    --------------日语二级词汇——形容词------------------

    ### 日语二级词汇——形容词解析 在学习日语的过程中,掌握一定数量的形容词对于提高语言水平至关重要。本文将详细介绍日语二级词汇中的部分形容词及其用法,帮助学习者更好地理解和运用这些词汇。 #### 形容词...

    HSK3级-词汇例句-3.pdf

    11. 地dì图t ú(地图) - 我出门的时候,常常用手机里的百度地图,地图的意思。 12. 电di à n梯t ī(电梯) - 我家住六楼,可是没有电梯,每天走楼梯,电梯的意思。 13. 电di à n子zǐ邮yó u件ji à n(电子...

    SIMATIC D7-SYS 词汇表.pdf

    ### SIMATIC D7-SYS 词汇表.pdf 相关知识点 #### 一、概述 - **标题**: SIMATIC D7-SYS 词汇表.pdf - **描述**: D7-SYS词汇表 - **标签**: D7-SYS手册 DY-SYS词汇 - **部分内容**: - 本手册为SIMATIC D7-SYS的相关...

    The-General-Service-List---英语常用词汇表.doc

    The-General-Service-List---英语常用词汇表.doc

    经过处理的腾讯中文词汇/短语向量 tencent-ailab-embedding-zh-d200-v0.2.0-s

    经过处理的腾讯中文词汇/短语向量 tencent-ailab-embedding-zh-d200-v0.2.0-s。包含使用方法和训练方法。

    电子病历常见词汇词库-数据集-机器学习训练材料大全-1985条-用于机器训练.txt

    电子病历常见词汇词库-数据集-机器学习训练材料大全-1985条-用于机器训练.txt

    俞敏洪托福词汇.txt

    ### 俞敏洪托福词汇解析 #### abandon (遗弃、放弃) - **vt.** 遗弃,放弃。例如,“The cruel man abandoned his wife and child.”(那个残忍的男人遗弃了他的妻子和孩子。) - **n.** 放纵,无约束。此词性在...

    新东方新四级词汇-正序版.pdf

    新东方新四级词汇正序版是针对中国大学生英语四级考试(CET-4)的一份词汇资料,这份词汇书按照字母顺序排列,旨在帮助学生系统地学习和记忆考试大纲要求掌握的词汇。下面详细解析该资料中出现的部分词汇的知识点。 ...

    elasticsearch-analysis-pinyin-7.10.1 elasticsearch-analysis-ik-7

    Elasticsearch是一个强大的开源搜索引擎,广泛应用于大数据分析和实时数据检索。在中文处理方面,它需要依赖特定的分词插件来对文本进行有效的索引和搜索。在给定的标题和描述中,提到了两个重要的插件:"elastic...

    GRE词汇精选乱序版文字.pdf

    "GRE词汇精选乱序版文字.pdf" Gre词汇精选乱序版文字.pdf是由俞敏洪编著的一本GRE词汇书籍。该书籍旨在帮助GRE考试的考生备战考试,提供了大量的词汇知识和学习方法。 本书的主要特点是将词汇按照乱序排列,以便...

    zzzbge-large-zh-v1.5-model

    zzzbge-large-zh-v1.5_model

    电子通信专业英语词汇

    在电子通信领域,掌握专业英语词汇是至关重要的,因为许多技术文档、数据手册(DATASHEET)以及行业标准都是用英文编写的。本资源包含两个文件:《通信类常用的英语词汇.doc》和《电子学英语词汇.pdf》,它们旨在...

    英文电影之必备词汇大汇总

    【起居类词汇详解】 在英语中,描述家居环境的词汇是观看英文电影时不可或缺的一部分。以下是一些关键的起居类词汇及其详细解释: 1. 卧室词汇: - blanket:毛毯,用于保暖的柔软覆盖物。 - cushion:垫子,...

    HSK标准教程123456词汇全套打包.zip

    HSK1 词汇.pdf HSK1-词汇和语法.pdf HSK2 词汇.pdf HSK3 词汇.pdf HSK4 词汇.pdf HSK5 词汇.pdf HSK6 词汇.pdf 新HSK1-4级词汇(6页打印版).pdf HSK5词汇表(汉英).pdf HSK6词汇表(汉英).pdf 新HSK1词汇表(汉英)...

Global site tag (gtag.js) - Google Analytics