`
easyhaohao
  • 浏览: 13980 次
  • 性别: 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是一个压缩包文件,包含了一个专门针对计算机领域的专业词库。这个词库的主要目的是为了帮助用户在使用金山、有道等流行的电子词典软件时,能获取到更加准确且专业的...

    1800个程序员必备词汇-开发必备-适用前后端-编程词汇-1800词40页高清完整版-带音标-右侧下载前可预览.pdf

    这份资料名为"1800个程序员必备词汇-开发必备-适用前后端-编程词汇-1800词40页高清完整版-带音标-右侧下载前可预览.pdf",是一份专为程序员设计的英语词汇手册,包含了大约1800个在软件开发中常用的词汇,并附带音标...

    电子词典--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(电子...

    elasticsearch-analysis-ik-7.4.2.zip.7z

    `ik_max_word`倾向于拆分出更多的词汇,适合用于搜索引擎;而`ik_smart`则较为保守,只拆分常见的词汇,适用于精确匹配。 此外,elasticsearch-analysis-ik还提供了自定义词典的功能,允许用户根据业务需求添加或...

    SIMATIC D7-SYS 词汇表.pdf

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

    中文翻译英文模型,opus-mt-en-zh

    这些语料库包含了从科技文章、新闻报道到文学作品等多个领域的真实语料,确保了翻译模型能够涵盖广泛的专业词汇和表达方式。经过充分的训练,该模型能够学习到不同语境下词汇的准确用法,包括成语、俗语以及行业术语...

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

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

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

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

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

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

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

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

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

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

    电子通信专业英语词汇

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

    雅思精准词汇(单元词汇list).pdf

    雅思精准词汇(单元词汇list) 雅思精准词汇(单元词汇list)是为准备雅思考试的考生提供的一份详细的词汇列表,旨在帮助考生快速提高英语词汇水平,提高考试成绩。下面是对该资源的详细解释和知识点总结: 一、 ...

    家电分类与英语词汇.docx

    【家电分类与英语词汇】 家电,又称家用电器,是我们日常生活中不可或缺的一部分,它们极大地便利了我们的生活。在本文档中,我们将深入探讨不同类型的家电及其对应的英语词汇,帮助你了解和掌握这些常用电器的英文...

Global site tag (gtag.js) - Google Analytics