文档章节

关于开发简易搜索引擎的一些总结和思考

FansUnion
 FansUnion
发布于 2015/05/03 01:30
字数 764
阅读 103
收藏 0
在大学期间,有段时间对搜索还是比较感兴趣的,就研究了几天。后来,发现搜索引擎太难搞了,分词啥的,好多都是纯算法。感觉没啥意思,so就半途而废,玩别的技术领域去了。

  大学毕业加入秒针,对广告和监测有了一定的兴趣。so又想搞搜索引擎了,大概的目标就是,从网上爬去内容,建立索引,网友搜索、点击、广告点击等监测统计,存到数据库。

  这个项目,还真是做了,做完了一个Demo版。借助jsoup和自己写几行代码爬网页, 然后用lucene建立索引,然后就可以查询了,只能存储最基本的日志。项目名称叫做FansITSearch。

  这个项目,还有另外一个用途, 就是索引硬盘中的内容,比如TXT、PDF、Word、Excel等各种类型的文档,方便自己查找。我们应该非常清楚地看到,Windows自带的搜索,慢的和蜗牛一样。

  桌面搜索引擎,不知道有没有比较牛逼的,反正我还没有注意到。

   2014年下半年,在写个人官网和BriefCMS,都是侧重内容型的网站,建立全站的全文搜索,还是非常有实际价值的。

   在网站中,加入全文搜索功能,除去技术实现,怎么接入有2种思路:
1.把Lucene实现的全文索引和查询,做成基础库。
  其他业务项目需要使用,就引入这个基础库,开发起来,只需要提供数据等接口就可以了。
  这种方式,我觉得相对容易实现。毕竟是白盒的,能直接看到代码,定制很容易。

2.把全文搜索做成一项服务。
  这个网站是一个独立的项目,其它任何内容型的网站,如果需要搜索功能,使用它的服务就好。
  比如,百度早期就是给其它门户网站提供站内搜索。
  服务怎么去实现呢,毕竟各个项目之间要互相独立。

   关于功能
1. 爬虫
    用jsoup解析页面的url、自己写递归、逻辑判断,也可以使用WebMagic、Apache-solr。
  solr一定得认真研究下,http://lucene.apache.org/solr/

2.存储数据
  文件、数据库

3.索引
  lucene做

4.查询
  lucene

5.统计。

  自己写代码,比如搜索词、点击。 

原文首发:http://fansunion.cn/article/detail/579.html



  写这篇文章,其实是想做个一个关于搜索的总结,同时,为2015年预计的开发做个思想准备,知道自己应该去解决哪些问题。

  预计2015年的项目有,小雷官网、BriefCMS、简易搜索、电商网站。

  力求做到,思路清晰、代码复用、 有商业价值、提高个人技术水准,更重要的是为可能的若干年之后的,“去而复返”做写技术准备。

© 著作权归作者所有

FansUnion
粉丝 60
博文 858
码字总数 825464
作品 0
丰台
高级程序员
私信 提问
投稿005期 | 如何做你自己技术上的老师

赤裸裸的现实 我是一个前端开发,最近碰到很多新人,或多或少都抱着这样的期待:在工作中能遇到个天使般的老师,能够悉心的指导你,帮你解决你所遇到的难题, 最好还能帮你系统性的帮你讲解一...

Noahlam
2018/06/30
0
0
Zimmerman: Qt 可以给 Ubuntu 带来很多很多

Ubuntu的Zimmerman: Qt可以给Ubuntu带来很多很多 这是一则…呃,好消息,我猜是吧?那要看你忠于谁了。看来Ubuntu在思揣着使用Qt来开发应用的想法。Qt是一个比Gtk+要先进得多的开发构架已经不...

xyxzfj
2010/10/21
1K
2
[开发者简报:第十四期] 函数式编程| 公钥加密 | REST | GraphQL

教程 函数式编程 Charles Scalfani在Medium上分享了几篇高质量关于函数式编程教程文章,另外还有几篇文章也很精彩,强烈推荐阅读。 使用Android分页库:创建无限列表 本问教你构建一个简单的...

developergang
08/09
5.1K
3
No-Transform协议禁止搜索引擎转码兼移动站建设问答

No-Transform协议禁止搜索引擎转码兼移动站建设问答技术 maybe yes 发表于2014-12-29 13:42 原文链接 : http://blog.lmlphp.com/archives/51 来自 : LMLPHP后院 在 手机端访问时,发现自己的...

hosser
2015/02/09
618
0
解决问题的能力和个人学习能力总结。

赤裸裸的现实我是一个前端开发,最近碰到很多新人,或多或少都抱着这样的期待:在工作中能遇到个天使般的老师,能够悉心的指导你,帮你解决你所遇到的难题, 最好还能帮你系统性的帮你讲解一...

舒龙虎
2018/08/07
68
0

没有更多内容

加载失败,请刷新页面

加载更多

Hibernate 5 的模块/包(modules/artifacts)

Hibernate 的功能被拆分成一系列的模块/包(modules/artifacts),其目的是为了对依赖进行独立(模块化)。 模块名称 说明 hibernate-core 这个是 Hibernate 的主要(main (core))模块。定义...

honeymoose
56分钟前
4
0
CSS--属性

一、溢出 当内容多,元素区域小的时候,就会产生溢出效果,默认是纵向溢出 横向溢出:在内容和容器之间再套一层容器,并且内部容器要比外部容器宽 属性:overflow/overflow-x/overflow-y 取值...

wytao1995
今天
4
0
精华帖

第一章 jQuery简介 jQuery是一个JavaScript库 jQuery具备简洁的语法和跨平台的兼容性 简化了JavaScript的操作。 在页面中引入jQuery jQuery是一个JavaScript脚本库,不需要特别的安装,只需要...

流川偑
今天
7
0
语音对话英语翻译在线翻译成中文哪个方法好用

想要进行将中文翻译成英文,或者将英文翻译成中文的操作,其实有一个非常简单的工具就能够帮助完成将语音进行翻译转换的软件。 在应用市场或者百度手机助手等各大应用渠道里面就能够找到一款...

401恶户
今天
3
0
jenkins 插件下载加速最终方案

推荐做法 1、告诉jenkins 我哪些插件需要更新 jenkins插件清华大学镜像地址 https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json 1.进入jenkins系统管理 2.进入插件管...

vasks
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部