搜索引擎分为三大块:下载,索引,搜索。
下载:
这部分是需要把你想要搜索的范围的原始数据。如果搜索的范畴是网页上的内容,那么它就是一个网络爬虫。我当时做的是一个校内网的搜索引擎,所以就写了一个爬虫从校园网主页开始下载,分析网页内的链接把符合要求的链接加入待下载队列,这样一直把所有校园网的网页全部都下载下来。
索引
搜索引擎之所以可以搜的那么快,都是索引的功劳。索引是一种专门针对搜索优化的结构,详情可以百度 倒排索引 。
前面搜索下载的是网页全文,里面的html标签是不需要被搜索的,所以要把数据清洗一下,提取出其中的重要内容。
文本内容的预处理还需要分词 、去除无意义的停用词等。分词是什么呢…你还是百度吧
建立索引有现成的库:LUCENE ,它自带有几个默认分词器,如果想要你的搜索引擎搜索的结果更好,你可以使用的中文分词器(这个当然也有现成的工具啦,ik分词,NLPIR这些都是现有的解决方案,效果也还不错)如果之前没有接触过它,那就需要学习一下。
索引建立好了,接下来就是搜索了。搜索是将根据查询词,搜索索引内匹配的内容,然后展示出来。符合查询词的结果多了的时候怎么办呢,这就涉及到排序的问题,这就有点复杂啦,这就涉及到很多排序算法比如tfidf之类的东西,不过这些lucene的api也帮你做了,它的内部有一个打分机制,将打分高放在搜索结果的前面。
以上三个点,每一个地方如果要展开,都可以写一部小书了,根据题主情况选择了解学习。
说了以上,如果你只是想实现一个小文本量的检索功能,select from xxx like 就可以满足你的需求。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)