搜索引擎包括全文索引、目录索引、元搜索引擎、垂直搜索引擎、集合搜索引擎、门户搜索引擎和免费链接列表。
这里主要介绍全文索引和目录索引。
第一,全文索引:
首先是数据库中数据的收集。搜索引擎的自动信息收集功能有两种。一种是定时搜索,即每隔一段时间(比如googl
全文搜索引擎包括:
1.全文搜索引擎
lucene的开发语言是java,也是java家族中最著名的开源搜索引擎。它已经是java世界中的一个标准全文搜索程序,并且它提供了一个完整的。查询引擎和索引引擎,没有中文分词引擎,需要自己实现,所以需要用lucene构建一个搜索引擎。此外,它不支持实时搜索,但linkedin和twitter分别在lucene上改进了实时搜索。其中lucene有一个c移植版本叫lucene,理论上比lucene快,因为是用c写的.
官方主页:
clucene官方主页:
2.狮身人面像
sphinx是用c语言编写的开源搜索引擎,也是目前主流的搜索引擎之一。在索引事件上比lucene快50%,但是索引文件比lucene大一倍,所以sphinx在索引上是用空间换事件的策略,在检索速度上和lucene相差不大,但是在检索准确率上lucene比sphinx好。另外,lucene在中文分词引擎的加入难度上优于sphinx,其中sphinx支持实时搜索,使用起来相对简单方便。
官方主页:
3.夏皮安
xapian是一个用c编写的全文检索程序,它的api和检索原理在很多方面与lucene相似,填补了c中的一个空缺.
官方主页:
4.上下真空滤器
nutch是一个用java实现的开源web搜索引擎,包括爬虫、索引引擎和查询引擎,其中nutch基于lucene,lucene为nutch提供了一个用于文本索引和搜索的api。
你是否应该使用lucene或nutch应该是,如果你不不需要抓取数据,你应该使用lucene。最常见的应用是您有数据源,需要为这些数据提供一个搜索页面。在这种情况下,最好的方法是直接从数据库中获取数据,并用luceneapi构建一个索引。
官方主页:
5.数据公园搜索
dataparksearch是一个用c语言实现的开源搜索引擎,其中网页排序基于神经网络模型,支持下载http、https、ftp、nntp等网页,包括索引引擎、搜索引擎和中文分词引擎(这是唯一一个带有中文分词引擎的开源搜索引擎)。它可以单独定制搜索结果,并有完整的日志记录。
官方主页:
6.泽泰尔
zettair是一个基于justinzobel的研究成果。它是用c语言实现的。justinzobel在全文检索领域非常有名,是业界第一。一个系统地提出倒排索引差分压缩算法的人,倒排表的压缩极大地提高了检索和加载的性能,同时将空间膨胀率降低到了一个非常好的水平。因为zettair起源于学术界,代码由rmit大学的搜索引擎组织编写,所以它的代码简洁高效,是学习倒排索引经典算法的一个非常好的例子。支持linux、windows、macos等系统。
官方主页:
7.因德里
indri是一个用c语言和c语言编写的全文检索引擎系统。它是由麻省大学和卡内基梅隆大学联合推出的开源项目。它的特点是跨平台和api接口支持java,php和c。
官方主页:
8.一种活泼的小狗
terrier是由格拉斯哥大学计算科学学院用java开发的全文检索系统。
官方主页:
9.加拉戈
galago是一个用java语言编写的关于文本搜索的工具集。它包括索引引擎和查询引擎,还包括一个叫做tupleflow的分布式计算框架(类似于google的mapreduce)。这个检索系统支持多种indri查询语言。
官方主页:
10.斑马
zebra是用c语言实现的检索程序,其特点是支持大数据、email、xml、marc等格式。
官方主页:
11.索尔
solr是一个用java开发的独立的企业级搜索应用服务器,它提供了一个类似于web-service的api接口。它是基于lucene的全文检索服务器,也是lucene的变种。很多一线互联网公司都在用solr,这也是一个成熟的解决方案。
官方主页:
12.弹性搜索
elasticsearch是一个开源的分布式搜索引擎,用java语言开发,基于lucene构建。它是为云计算设计的,可以实现实时搜索、稳定可靠。elasticsearch的数据模型是json。
官方主页:
13.呼
whoosh是一个用纯python编写的开源搜索引擎。
官方主页: