b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

java实现简单的搜索引擎

电脑杂谈  发布时间:2019-05-02 19:10:35  来源:网络整理

qq简单简单分组_简单php搜索引擎_简单搜索引擎

记得java老师曾经说过百度的一个面试题目,大概意思是“有1W条无序的记录,如何从其中快速的查找到自己想要的记录”。这个就相当于一个简单的搜索引擎。简单搜索引擎最近在整理这一年的工作中,自己竟然已经把这个实现了,今天对其进一步的抽象,和大家分享下。简单搜索引擎

先写具体的实现代码,具体的实现思路和逻辑写在代码之后。

搜索时用于排序的Bean

构造的搜索数据结构以及简单的搜索算法

简单php搜索引擎_qq简单简单分组_简单搜索引擎

测试用例:

测试输出结果如下:

这样一个简单的搜索引擎也就算是完成了。

但是这个示例文件有很多问题,首先,显示的是英文字符,在面对中国同事或者老板做报告和分享时,使用英文的词云明显不合适,而且很多文本本身就是中文词汇,没法制作成英文词云。这类方法简单、分词效率较高,但汉语语言现象复杂丰富,词典的完备性、规则的一致性等问题使其难以适应开放的文本的分词处理。这类方法简单、分词效率较高,但汉语语言现象复杂丰富,词典的完备性、规则的一致性等问题使其难以适应开放的文本的分词处理(比如未登录词)。

qq简单简单分组_简单搜索引擎_简单php搜索引擎

改进方法:采用现在成熟的分词方法,比如IKAnalyzer、StandardAnalyzer等,这样修改,keySearch的数据结构就需要做下修改,可以修改为 private HashMap<String, String>[] keySearch = new HashMap[maxLength]; 其中key存储分的词元,value存储唯一标识id。

问题二:本文实现的搜索引擎对词元并没有像lucene设置权重,只是简单的判断词元是否在对象中出现。

改进方法:暂无。添加权重处理,使数据结构更加复杂,所以暂时没有对其做处理,在今后的文章中会实现权重的处理。

下面就简单的介绍一下搜索引擎的实现思路。

简单搜索引擎_qq简单简单分组_简单php搜索引擎

答:c#中的索引器通常用于索引数组,索引器不单能索引数字(数组下标),还能索引一些hashmap的字符串,所以,通常来说,c#中类的索引器通常只有一个,就是this,但也可以有无数个,只要你的参数列表不同就可以了,索引器和返回值无关。下面以位图文件的存储原理为例,由于存储原理不一样,256种颜色的bmp文件,调色板的索引映射为像素的颜色,还包括了文件长度和位图数据在文件中的起始位置,文件的这一部分的长度是一百万个字节,对图像文件的存储原理做一个说明,尺寸一样的相片、宽,一兆字节的位图数据,一个像素的值对应的是调色板的索引,存储为bmp格式和存储为jpg格式时。引用类型的数值,会把在托管堆中分配一块专门的位置存放数据,然后程堆栈中存放着指向数据存储的内存地址,因为数组是引用类型,这样它增加、修改数组中的元素都会按照索引将元素排列在一起,就像班级中学生的学号一样,你按照学号(索引)就可以对学生的如成绩、信息进行操作,你只需定义一个数组变量,记住它的名字就可以方便进行各种你想达到的效果。

对于details我就不做太多的介绍。

keySearch中数组下标(如用HashMap就是key)的计算方法是获取词元的第一个字符int值(因为本文的分词采用的是字符分词,所以一个字符就是一个词元),该int值就是数组的下标,相应的数组值就是Object的唯一标识。这样keySearch的数据结构就如下图

简单php搜索引擎_qq简单简单分组_简单搜索引擎

因此想添加新纪录的时候只需要调用add方法即可。

3.由于国际站和巴西站搜索逻辑没有变化,而影响排序的是标题不同,所以影响排序的因素除去商业性得分,在于搜索相关性。可以说,这套搜索逻辑是在优先解决我们大脑临时断片的问题,其次才是查找详细信息。搜索与查找查找函数很多,功能也很强大,包括了: find rfind find_first_of find_last_of find_first_not_of find_last_not_of这些函数返回符合搜索条件的字符区间内的第一个字符的索引,没找到目标就返回npos。

在getIds方法中,HashMap<String, Integer> idTimes = new HashMap<String, Integer>();idTimes 变量用来存储搜索词中的词元有多少个在keySearch中出现,key值为唯一标识id,value为出现的词元个数。HashSet<String> ids = new HashSet<String>(); ids变量用来存储出现的词元的ids。这样搜索的复杂度就是搜索词的词元个数n。获得包含词元的ids,构造SortBean数组,对其排序,排序规则是出现词元个数的降序排列。最后返回ids字符串,每个id用","分割。如要获取详细信息

再使用getObjects方法即可。

上述的只是一个简单的搜索引擎,并没有设计太多的计算方法,希望对大家的学习有所启发。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-95759-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 孙帅斌
        孙帅斌

        #fx_4walls##fx_4walls##fx_4walls#

      • 董武子
        董武子

        只是认得崇洋媚外的心理在作怪

      • 赵匡义
        赵匡义

        用十艘022导弹飞艇绕着美舰走

      每日福利
      热点图片
      拼命载入中...