一些开源搜索引擎实现——倒排使用原始文件,列存储Hbase,KV store如levelDB、mongoDB、redis,以及SQL的,如sqlite或者xxSQL

简介:
本文说明:除开ES,Solr,sphinx系列的其他开源搜索引擎汇总于此。
 
A search engine based on Node.js and LevelDB

A persistent, network resilient, full text search library for the browser and Node.js

https://github.com/fergiemcdowall/norch

https://github.com/fergiemcdowall/search-index

使用的是levelDB存储索引,不过目前没有明白,对于倒排索引,其是否适合?类似思路还有:

https://github.com/patrickfrey/strus

Library implementing the storage and the query evaluation for a text search engine. It uses on a key value store database interface to store its data. Currently there exists an implementation based on the google LevelDB library. http://www.project-strus.net

用法:https://www.codeproject.com/articles/1059766/building-a-search-engine-with-python-tornado-and-s

go写的,评分比较高的,也是levelDB实现底层存储:

https://github.com/blevesearch/bleve 功能强大 支持facet等

https://github.com/huichen/wukong 2000+star 貌似使用的boltBD存储 支持了分布式 源码分析在https://ayende.com/blog/171745/code-reading-wukong-full-text-search-engine 可以看到其使用的内存 持久化支持kv DB

https://github.com/basho/riak_search/ 应该使用的是riak(kv存储)中sets来存储倒排索引 不过是erlang语言写的让人很忧伤啊

https://github.com/victorparmar/zsearch 也是levelDB做的,看起来很牛叉的样子,Low Data fragmentation and good random write performance by using levelDB Log Structured Merge Trees. High performance query speed by using CompressedBitmap to store DocumentIds in an InvertedIndex interface provided by a simple libEvent2 http server.

https://github.com/daviddengcn/gcse 貌似也是levelDB 

https://github.com/eugeneware/fulltext-engine

 

使用mongodb做倒排存储的:

https://github.com/c-bata/gosearch 本质是底层addToSet 见这个即可知 https://github.com/c-bata/gosearch/blob/master/models/index.go

https://github.com/hemslo/poky-engine A simple search engine in python using Tornado, Scrapy, Redis and MongoDB

 

360的:

A search engine which can hold 100 trillion lines of log data.
用的是hdfs存储,MR来做并发,他号称针对日志搜索,其元数据是放在redis NoSQL里,倒排索引放的是Hbase,这样看来本质上是列存储!待看!
 https://github.com/Qihoo360/poseidon

 

linkin的:

https://github.com/linkedin/indextank-engine 比较强大 支持facet等 使用内存和文件两种方式做索引 有时间可以好好研究下 底层文件应该支持压缩 

https://github.com/gigablast/open-source-search-engine  http://www.gigablast.com/使用的搜索引擎 代码是c++写的不过看起来稍微有点凌乱 也支持索引持久化到数据库

 

分布式:

https://github.com/izenecloud/sf1r-lite 使用nginx做负载均衡,底层倒排貌似是用hadoop做的 架构图 https://raw.githubusercontent.com/izenecloud/sf1r/master/docs/source/images/sf1r.png

 

值得一看的:

https://github.com/aaalgo/donkey

https://github.com/groonga/groonga Groonga is an open-source fulltext search engine and column store. It lets you write high-performance applications that requires fulltext search.列存储?

 

ruby的:

https://github.com/mrkamel/search_cop 使用了SQL数据库,支持SQL语句+全文搜索 Search engine like fulltext query support for ActiveRecord

 

使用lucene做全文搜索的:

CrateDB: The fast, scalable, easy to use SQL database with native full text search https://crate.io
http://www.opensearchserver.com/
yacy

 

go search网站的搜索引擎:(http://go-search.org/search?q=hello)

https://github.com/daviddengcn/gcse 用的是 https://github.com/daviddengcn/go-index 做索引 有时间可以研究下后者

 

使用原始文件做倒排的:

https://github.com/bradleypeabody/fulltext  Pure-Go full text indexer and search library

https://github.com/dchest/static-search 搜索本地文件
https://github.com/getwe/cse 用的是https://github.com/getwe/goose 本质上是原始文件倒排 是百度的一个工程师写的 http://getwe.cn/%E6%8A%80%E6%9C%AF/%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8E/goose/database-diskindex/
 
使用redis做倒排的:
https://github.com/hymloth/pyredise/
 

lucene的go移植版:

https://github.com/philipsoutham/golucy

https://github.com/ipfs-search/ipfs-search 使用ES5做搜索

 

用sqlite存倒排索引:

https://github.com/gansidui/gose

 
 
尚不知内在原理的:
https://github.com/gigablast/open-source-search-engine
https://github.com/sourcegraph/thesrc 源码搜索 但还没有看出其使用的搜索引擎

https://github.com/rsesek/usda-ndb 搜食品成分的

https://github.com/devict/magopie 搜BT种子的

https://github.com/yieldbot/ferret  Ferret is a search engine that unifies search results from Github, Slack, Trello and more

https://github.com/ndmitchell/hoogle haskell写的

https://github.com/BitFunnel/BitFunnel 

https://github.com/Maxime2/dataparksearch

 

其他:

https://github.com/KunBetter/GridSearch real-time grid search engine 网格搜索引擎 不知道原理

https://github.com/kanatohodets/carbonsearch  search engine for graphite metrics

https://github.com/beniz/seeks 貌似是直接放在内存一个list里 p2p websearch 

https://github.com/carrot2/carrot2 可能用到了ES Solr

https://github.com/reyesr/fullproof 使用webSQL或者浏览器DB来存倒排索引的JS搜索引擎

https://github.com/nolanlawson/pouchdb-quick-search 使用小型数据库的离线搜索例如phonegap、app等

https://github.com/legendary001/SearchEngine 使用hadoop+lucene的搜索引擎

 

不过按照我的观点看,搜索引擎本质上是针对各个field的特定搜索word的列存储。所以其底层实现用tokuDB线性树结构应该更合适,日志的话搜索使用时间序列存储更合适。















本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/bonelee/p/6265853.html,如需转载请自行联系原作者


相关文章
|
存储 NoSQL 分布式数据库
Hbase+ES和MongoDB存储大数据的选用
Hbase+ES和MongoDB存储大数据的选用
1078 0
|
NoSQL 关系型数据库 MongoDB
接口管理工具深度对比:Apipost与Apifox在Redis/MongoDB支持上的关键差异
近期在团队工具选型时,系统对比了Apifox和Apipost两款接口管理工具,我们的体会是:Apipost适合需要同时管理多种数据库的中大型项目,特别是涉及Redis/MongoDB等非关系型数据库的场景,Apifox仅建议在纯关系型数据库架构且预算有限的小型项目中短期使用。
506 3
|
存储 NoSQL MongoDB
Redis在中国火爆,为何MongoDB更受欢迎国外?
本文介绍了Redis和MongoDB的基本概念及其在GitHub Star、DB-Engines Ranking和Google Trends中的数据对比。Redis是一个基于内存的键值对存储数据库,适合快速读写场景;MongoDB则是面向文档的数据库,支持大规模数据存储和复杂查询。全球范围内,MongoDB的搜索热度高于Redis,但在中国市场,Redis更受欢迎,因其高性能和低延迟特性满足了中国互联网公司对高并发的需求。总结部分分析了两者的特点及适用场景,并结合中美两国的行业背景解释了其受欢迎程度的不同原因。
551 1
|
消息中间件 NoSQL 关系型数据库
Linux安装 OpenResty、Nginx、PHP、Mysql、Redis、Lua、Node、Golang、MongoDB、Kafka等
Linux安装 OpenResty、Nginx、PHP、Mysql、Redis、Lua、Node、Golang、MongoDB、Kafka等
606 0
|
NoSQL MongoDB Redis
Python与NoSQL数据库(MongoDB、Redis等)面试问答
【4月更文挑战第16天】本文探讨了Python与NoSQL数据库(如MongoDB、Redis)在面试中的常见问题,包括连接与操作数据库、错误处理、高级特性和缓存策略。重点介绍了使用`pymongo`和`redis`库进行CRUD操作、异常捕获以及数据一致性管理。通过理解这些问题、易错点及避免策略,并结合代码示例,开发者能在面试中展现其技术实力和实践经验。
799 9
Python与NoSQL数据库(MongoDB、Redis等)面试问答
|
存储 缓存 NoSQL
redis和mongodb比较
总之,Redis和MongoDB在不同的场景下有不同的优势,选择取决于应用的需求和数据特点。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
969 5
redis和mongodb比较
|
NoSQL 关系型数据库 MySQL
Windows、Linux、Mac安装数据库(mysql、MongoDB、Redis)#0
不同系统下进行MySQL安装、MongoDB安装、Redis安装【2月更文挑战第5天】
921 5
Windows、Linux、Mac安装数据库(mysql、MongoDB、Redis)#0
|
网络协议 NoSQL 网络安全
【Azure 应用服务】由Web App“无法连接数据库”而逐步分析到解析内网地址的办法(SQL和Redis开启private endpoint,只能通过内网访问,无法从公网访问的情况下)
【Azure 应用服务】由Web App“无法连接数据库”而逐步分析到解析内网地址的办法(SQL和Redis开启private endpoint,只能通过内网访问,无法从公网访问的情况下)
450 0
|
存储 NoSQL Java
HBase是一个开源的、分布式的、面向列的NoSQL数据库系统
HBase是一个开源的、分布式的、面向列的NoSQL数据库系统
502 0
|
SQL 存储 NoSQL
SQL实践篇(三):什么是Redis
SQL实践篇(三):什么是Redis
243 1

推荐镜像

更多